{"id":2929,"date":"2017-10-07T14:59:41","date_gmt":"2017-10-07T12:59:41","guid":{"rendered":"http:\/\/www.anadebreuil.org\/blog\/?p=2929"},"modified":"2017-10-07T14:59:41","modified_gmt":"2017-10-07T12:59:41","slug":"compilacion-en-fedora-de-un-kernel-nuevo-para-solventar-problemas-de-sonido-en-dell-xps-13-9343-modelo-de-2015","status":"publish","type":"post","link":"https:\/\/www.anadebreuil.org\/blog\/?p=2929","title":{"rendered":"Compilaci\u00f3n en Fedora de un kernel nuevo para solventar problemas de sonido en Dell XPS 13 9343 (modelo de 2015)"},"content":{"rendered":"<p>Todo sabemos que el port\u00e1til Dell XPS 13 es una gran equipo. Adem\u00e1s en algunos modelos incluye soporte para Ubuntu, as\u00ed que parece que todo tendr\u00eda que haber sido perfecto. Pero no ha sido as\u00ed del todo. La primera versi\u00f3n de 2015 s\u00ed que da ciertos problemas de drivers cuando quieres usar otro Linux que no sea el oficial (v\u00e9ase <cite><a href=\"https:\/\/major.io\/2015\/02\/03\/linux-support-dell-xps-13-9343-2015-model\/\" target=\"_blank\">Linux support for the Dell XPS 13 9343<\/a><\/cite> en el blog de <em>Major Hayden<\/em>).<br \/>\nSi bien esos problemas se han ido solucionando conforme se actualizaba el n\u00facleo de Linux, curiosamente ha quedado un bug relativo al sonido: en algunos modelos, no todos si no parece ser que \u00fanicamente los modelos con micro i7, en el modo de sonido I2S se introducen molestos clicks m\u00e1s audibles cuanto menor sea el volumen.<br \/>\nPuedes seguir en <cite><a href=\"https:\/\/bugzilla.redhat.com\/show_bug.cgi?id=1188741\" target=\"_blank\">Bug 1188741<\/a> &#8211; No sound on Dell XPS 13 9343 (2015 model)<\/cite>, pero al final la conclusi\u00f3n a la que vas a llegar es que la \u00fanico soluci\u00f3n es recompilar el n\u00facleo para forzar el uso del est\u00e1ndar HDA en la tarjeta de sonido en vez del m\u00e1s nuevo I2S. Desafortunadamente no hay opci\u00f3n ni par\u00e1metro para eso. S\u00f3lo te queda recompilar e instalar una versi\u00f3n personalizada del n\u00facleo, como explican de forma clara en la <a href=\"https:\/\/wiki.archlinux.org\/index.php\/Dell_XPS_13_(9343)#Audio\" target=\"_blank\">p\u00e1gina de Arch Linux<\/a> destinada a este equipo.<br \/>\nPor tanto, veamos c\u00f3mo recompilar el n\u00facleo en Fedora para forzar el modo HDA en tarjetas de sonido Realtek ALC3263. Si bien reconfigurar el n\u00facleo es sencillo, compilarlo lleva mucho tiempo y recursos de CPU, as\u00ed que escoge primero un equipo potente, con la mayor cantidad de n\u00facleos y bien ventilado para no sobrecalentar demasiado la CPU.<!--more--><\/p>\n<h4>1. Bajarse el c\u00f3digo fuente<\/h4>\n<p>Uno de los mayores errores de novato es pensar que \u00abbajarse\u00bb el n\u00facleo quiere decir bajare el n\u00facleo original de Linux, desde <em>kernel.org<\/em>. Nada m\u00e1s err\u00f3neo. El n\u00facleo que usa cualquier distribuci\u00f3n se basa en el n\u00facleo original, pero fuertemente reconfigurado y parcheado. Lo que hay que hacer se bajarse el c\u00f3digo fuente de t\u00fa distribuci\u00f3n. Luego hacer los cambio necesarios para recompilarlo y obtener un n\u00facleo compatible con el que viene por defecto en tu sistema.<br \/>\nEn Fedora, la forma m\u00e1s c\u00f3moda de bajarse el c\u00f3digo fuente de la \u00faltima versi\u00f3n del n\u00facleo es usar el propio comando <code>dnf<\/code> para bajarse el fichero SRPM con el c\u00f3digo fuente y los parches de Fedora. Ejecutar (como usuario normal):<\/p>\n<pre>$ dnf download --source --destdir . kernel<\/pre>\n<p>En mi caso este comando baj\u00f3 desde los repositorios de Fedora el fichero <em>kernel-4.12.14-200.fc25.src.rpm<\/em>, que ser\u00e1 el que usemos como ejemplo. Es necesario descomprimir el fichero con el comando <code>rpm<\/code>. Antes de descomprimir el fichero podr\u00eda ser necesario que movieras los directorios <var>SPECS<\/var> y <var>SOURCES<\/var> de <var>$HOME\/rpmbuild<\/var> si tienes ah\u00ed ficheros que no quieres que se mezclen con los del n\u00facleo.<\/p>\n<pre>rpm -U .\/kernel-4.12.14-200.fc25.src.rpm<\/pre>\n<p>Esto descomprime:<\/p>\n<ul>\n<li><var>kernel.spec<\/var> \u2192 <var>$HOME\/rpmbuild\/SPECS<\/var><\/li>\n<li>Resto (<var>*.tar.gz<\/var>, <var>*.patch<\/var>, etc.) \u2192 <var>$HOME\/rpmbuild\/SOURCES<\/var><\/li>\n<\/ul>\n<h4>2. Modificar el proceso de compilaci\u00f3n<\/h4>\n<p>Hay que editar el fichero <var>kernel.spec<\/var> en <var>$HOME\/rpmbuild\/SPECS<\/var>. Hay que introducir dos cambios:<\/p>\n<ol>\n<li>Cambiar el id de compilaci\u00f3n para que el fichero RPM resultante no se llame igual que los originales de Fedora. Para ello localizamos la l\u00ednea donde pone\n<pre># define buildid .local<\/pre>\n<p>y a\u00f1adimos debajo<\/p>\n<pre>%define buildid .local<\/pre>\n<p>Puedes poner el nombre que quieras: <var>.local<\/var>, <var>.hda<\/var>, etc. Pero siempre empezando por un punto.<\/li>\n<li>Buscar la l\u00ednea donde se ejecuta <var>mrproper<\/var>. Pone algo as\u00ed:\n<pre>make -s mrproper\r\ncp configs\/$Config .config<\/pre>\n<p>e inserta debajo el texto <var>sed -ri &#8216;s\/# CONFIG_ACPI_REV_OVERRIDE_POSSIBLE is not set\/CONFIG_ACPI_REV_OVERRIDE_POSSIBLE=y\/&#8217; .config<\/var>, de forma que el fichero queda as\u00ed:<\/p>\n<pre>make -s mrproper\r\ncp configs\/$Config .config\r\nsed -ri 's\/# CONFIG_ACPI_REV_OVERRIDE_POSSIBLE is not set\/CONFIG_ACPI_REV_OVERRIDE_POSSIBLE=y\/' .config<\/pre>\n<\/li>\n<\/ol>\n<h4>3. Compilar el nuevo n\u00facleo<\/h4>\n<p>El proceso de compilaci\u00f3n crear\u00e1 un nuevo fichero RPM que podremos instalar en nuestro sistema. Para ello basta ejecutar el comando<\/p>\n<pre>rpmbuild -ba .\/kernel.spec<\/pre>\n<p>y esperar unas cuentas horas, que depender\u00e1n de la potencia de tu equipo.<br \/>\nTras una compilaci\u00f3n exitosa, se crean los ficheros RPM binarios en <var>$HOME\/rpmbuild\/RPMS\/x86_64<\/var> y un nuevo fichero de fuentes en <var>$HOME\/rpmbuild\/SRPMS\/kernel-4.12.14-200.local.fc25.src.rpm<\/var>. Este \u00faltimo fichero no lo necesitamos puesto que no es m\u00e1s que un reempaquetado del que nos bajamos con nuestro fichero <var>kernel.spec<\/var>.<\/p>\n<h4>4. Instalar el n\u00facleo<\/h4>\n<p>Antes de instalar los ficheros binarios, conviene ver qu\u00e9 ficheros del n\u00facleo tenemos instalados actualmente:<\/p>\n<pre>dnf list installed | grep kernel\r\nkernel.x86_64                4.12.14-200.fc25           @updates\r\nkernel-core.x86_64           4.12.14-200.fc25           @updates\r\nkernel-devel.x86_64          4.12.14-200.fc25           @updates\r\nkernel-headers.x86_64        4.12.14-200.fc25           @updates\r\nkernel-modules.x86_64        4.12.14-200.fc25           @updates\r\nkernel-modules-extra.x86_64  4.12.14-200.fc25           @updates<\/pre>\n<p>A partir de ah\u00ed instalamos primero el n\u00facleo:<\/p>\n<pre>sudo dnf install \\\r\n .\/kernel-4.12.14-200.local.fc25.x86_64.rpm \\\r\n .\/kernel-core-4.12.14-200.local.fc25.x86_64.rpm \\\r\n .\/kernel-modules-4.12.14-200.local.fc25.x86_64.rpm  \\\r\n .\/kernel-modules-extra-4.12.14-200.local.fc25.x86_64.rpm<\/pre>\n<p>Y luego, si como en mi caso fuesen necesarios, los ficheros de desarrollo:<\/p>\n<pre>sudo dnf install \\\r\n .\/kernel-devel-4.12.14-200.local.fc25.x86_64.rpm \\\r\n .\/kernel-headers-4.12.14-200.local.fc25.x86_64.rpm<\/pre>\n<p>Para probar el n\u00facleo es necesario reiniciar <strong>en fr\u00edo<\/strong>, apagando completamente el equipo <strong>dos veces<\/strong>.<\/p>\n<h4>5. Salvar el n\u00facleo como el favorito para el arranque<\/h4>\n<p>Esta operaci\u00f3n debe realizarse como administrador. Hay que editar el fichero <var>\/boot\/efi\/EFI\/fedora\/grubenv<\/var> y a\u00f1adir al principio del fichero la l\u00ednea<\/p>\n<pre>saved_entry=Fedora (4.12.14-200.local.fc25.x86_64) 24 (Workstation Edition)<\/pre>\n<p>El contenido de la l\u00ednea debe ser el mismo que se muestra por pantalla en el momento del arranque. Si no quieres equivocarte en su contenido puedes copiar y pegar la entrada de men\u00fa desde el fichero <var>\/boot\/efi\/EFI\/fedora\/grub.cfg<\/var><br \/>\nOpcionalmente, puedes plantearte impedir la sustituci\u00f3n del n\u00facleo en futuras actualizaciones del sistema, tal y como describo en <a href=\".\/?p=2906\">Forzar en Fedora la no sustituci\u00f3n de una versi\u00f3n del kernel de Linux<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Todo sabemos que el port\u00e1til Dell XPS 13 es una gran equipo. Adem\u00e1s en algunos modelos incluye soporte para Ubuntu, as\u00ed que parece que todo tendr\u00eda que haber sido perfecto. Pero no ha&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7],"tags":[102,10,101],"class_list":["post-2929","post","type-post","status-publish","format-standard","hentry","category-tutoriales","tag-dell-xp3-13-9343","tag-fedora","tag-kernel"],"_links":{"self":[{"href":"https:\/\/www.anadebreuil.org\/blog\/index.php?rest_route=\/wp\/v2\/posts\/2929","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.anadebreuil.org\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.anadebreuil.org\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.anadebreuil.org\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.anadebreuil.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2929"}],"version-history":[{"count":27,"href":"https:\/\/www.anadebreuil.org\/blog\/index.php?rest_route=\/wp\/v2\/posts\/2929\/revisions"}],"predecessor-version":[{"id":2961,"href":"https:\/\/www.anadebreuil.org\/blog\/index.php?rest_route=\/wp\/v2\/posts\/2929\/revisions\/2961"}],"wp:attachment":[{"href":"https:\/\/www.anadebreuil.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2929"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.anadebreuil.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2929"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.anadebreuil.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2929"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}