Solucionar problemas con chip Wi-Fi Broadcom después de actualizar el kernel en Ubuntu y derivados

Buenas de nuevo, en esta ocasión vamos a hablar de un problema al que me tuve que enfrentar hace poco en mi laptop, y es que hace poco actualicé el Kernel Linux a su versión 4.0.2 (siguiendo el tutorial de esta entrada) para solucionar problemas de compatibilidad con el touchpad (como se explica en esta otra entrada). El caso es que parecia que la solución había resultado peor que el problema ya que desde ese momento la tarjeta Wi-Fi me dejó de funcionar; reinstalé el driver pero aún así seguía sin funcionar.

Esta entrada versa acerca de los siguientes chips de Wi-Fi Broadcom: BCM4311, BCM4312, BCM4313, BCM4321, BCM4322, BCM43224, BCM43225, BCM43227, BCM43228, BCM43142, BCM4331, BCM4352 y BCM4360; aunque puede funcionar también con otras tarjetas Broadcom, podeis mirar cual es vuestro chip con el comando

lspci | grep 'Network'

Dejenme decir antes que nada si no habeis actualizado el kernel y vuestra versión es 3.X.X (con ‘X’ me refiero a cualquier número) (podeis mirar cual es vuestro kernel ejecutando en una terminal ‘uname -r‘) tan solo teneis que instalar el driver, ejecutando

sudo apt-get install bcmwl-kernel-source

En cambio si vuestra versión de kernel es 4.X.X debeis seguir los pasos que van a continuación.

Lo primero que debemos hacer es desinstalar el driver de nuestro chip de conexión inalámbrica, para eso ejecutamos

sudo apt-get remove bcmwl-kernel-source

Ahora instalamos el paquete git-buildpackage que nos ayudará a compilar la versión actualizada del driver, que no es la que se encuentra en los repositorios oficiales (las aplicaciones de los repositorios de Ubuntu no suelen estar demasiado actualizadas), para ello

sudo apt-get install git-buildpackage

Bien, ahora debemos crear una carpeta en la que trabajar, podemos elegir una de nuestro sistema o hacer

mkdir bcmwl-ubuntu & cd bcmwl-ubuntu

Clonamos del GitHub de los desarrolladores del driver el paquete del mismo (no os preocupeis no hace falta tener cuenta de GitHub)

git clone https://github.com/longsleep/bcmwl-ubuntu.git bcmwl-ubuntu-master

Accedemos a la carpeta que acabamos de descargar

cd bcmwl-ubuntu-master

Ahora debemos compilar el paquete del driver usando primer programa que descargamos

gbp buildpackage -b -uc -us

Una vez hecho esto se nos habrá generado un .deb instalable del driver el la carpeta superior a la que nos encontramos. Podemos instalarlo con un instalador gráfico como GDebi, aunque yo recomiendo utilizar el siguiente comando que es más seguro y con menos probabilidad de error

sudo dpkg -i ../bcmwl-kernel-source*.deb

Y, de haber salido todo correctamente tan solo hará falta reiniciar y tendremos nuestro WiFi correctamente funcionando 😄

Un saludo a todos/as, espero que este tuto os haya servido de ayuda, si es así o si simplemente os gustó por favor compartidlo para que más gente lo pueda ver. ¡Hasta la próxima!

Anuncios
Solucionar problemas con chip Wi-Fi Broadcom después de actualizar el kernel en Ubuntu y derivados

Actualizar el kernel Linux a la versión 4.0.2, en Ubuntu y derivados

Buenas, en el anterior tuto puse un enlace a una web en la que enseñaba como actualizar el kernel a 4.0.2 (versión más reciente estable), en Ubuntu (cualquier versión y derivado) pero aunque la información de esa página era buena no estaba muy claro y era en inglés, por eso he decidido subirlo aquí.

Actualizar el kernel a una versión estable más moderna tiene algunas ventajas, entre ellas mayor soporte para hardware (yo lo actualicé para poder habilitar las funciones multitouch de mi touchpad, el tutorial lo tienes en esta entrada).

Debe quedar claro que todos los méritos de este tutorial han de ser atribuidos a linuxg.net, puesto que la infomación está sacada de allí. Empecemos.

Vamos a una carpeta de trabajo (yo recomiendo /tmp , ya que es solo para cosas temporales, pero puede ser cualquier otra)

cd /tmp

Descargamos los paquetes de la web oficial de Ubuntu

  • Máquinas de 64 bits (x86_64)
    wget kernel.ubuntu.com/~kernel-ppa/mainline/v4.0.2-wily/linux-headers-4.0.2-040002_4.0.2-040002.201505081529_all.deb kernel.ubuntu.com/~kernel-ppa/mainline/v4.0.2-wily/linux-headers-4.0.2-040002-generic_4.0.2-040002.201505081529_amd64.deb kernel.ubuntu.com/~kernel-ppa/mainline/v4.0.2-wily/linux-image-4.0.2-040002-generic_4.0.2-040002.201505081529_amd64.deb
  • Máquinas de 32 bits (x86)
    wget kernel.ubuntu.com/~kernel-ppa/mainline/v4.0.2-wily/linux-headers-4.0.2-040002_4.0.2-040002.201505081529_all.deb kernel.ubuntu.com/~kernel-ppa/mainline/v4.0.2-wily/linux-headers-4.0.2-040002-generic_4.0.2-040002.201505081529_i386.deb kernel.ubuntu.com/~kernel-ppa/mainline/v4.0.2-wily/linux-image-4.0.2-040002-generic_4.0.2-040002.201505081529_i386.deb

Ahora instalamos el kernel

sudo dpkg -i linux-headers-4.0*.deb linux-image-4.0*.deb

Ahora debemos reiniciar el ordenador…

¡Y ya está instalado! Ahora no nos tenemos que preocupar de eliminar el antiguo, simplemente la próxima vez que realicemos un

sudo apt-get autoremove

se nos eliminarán los paquetes del kernel que ya no estamos usando.

Espero que os haya servido este tutorial, si es así por favor dejadme un +1 😉 y cualquier duda comentad. ¡Un saludo!

Actualizar el kernel Linux a la versión 4.0.2, en Ubuntu y derivados

El touchpad de mi laptop no funciona correctamente, ¡solución!

Buenas, hoy os traigo la solución a un problema que me ha traido de cabeza durante casi dos días, y es que he vuelto a Ubuntu (concretamente a ElementaryOS, es una pasada, lo recomiendo) y el touchpad o panel táctil de mi portátil no funcionaba correctamente, es decir, no me lo reconocía como touchpad sino como mouse óptico, después de realizar unos ajustes si me lo reconocía como touchpad pero no me permitía activar la opción “Two finger scrolling” (emular la rueda del ratón pulsando el panel con dos dedos), y otro sinfín de problemas… Así que como a mí me ha costado tantísimo terminar de configurarlo correctamente aquí os traigo la guía (hay otros cientos de miles por internet, todas diferentes, pero este método fue el único que me funcionó a mí).

Lo primero que hay que hacer es averiguar si tu problema es de el que se trata esta guía, para ello vamos a ejecutar este comando en la terminal:

xinput list | grep 'PS/2'

Si lo que os sale se corresponde o se parece a una de los tres siguientes ejemplos es que habeis venido al sitio adecuado y casi seguro esta solución os resolverá el problema. (donde pone ‘FocalTech’ a veces pone otra marca, como Logitech o alguna otra, esta solución sirve igual).

↳ PS/2 Generic Mouse device id=13 [slave  pointer  (2)]
↳ PS/2 FocalTech Wheel Mouse id=13 [slave  pointer  (2)]
↳ PS/2 FocalTech FocalTech Touchpad in mouse emulation mode id=13 [slave  pointer  (2)]

Vale, ahora sabemos cual es el error, pero… ¿Cómo se soluciona?
Bien, lo primero que tenemos que hacer es intalar el driver controlador de nuestro touchpad, para ello:

sudo add-apt-repository ppa:hanipouspilot/focaltech-dkms
sudo apt-get update
sudo apt-get install focaltech-dkms

Ahora tenemos que reiniciar el equipo.
Una vez encendido comprobamos si se ha solucionado (es probable que aún no, no os preocupeis), en caso afirmativo podeis cerrar esta ventana, de lo contrario aún nos queda un poco más por hacer, pero no desinstaleis el paquete que acabamos de instalar ya que nos será útil.

En caso de que el error permanezca es que el kernel que teneis no soporta vuestro hardware (siesque pa’ que comprais laptops tan nuevas), ergo debemos actualizar nuestro kernel. Yo recomiendo actualizarlo a la última versión estable, que ahora es la 4.0.2 (fué lo que yo hice y me dió buen resultado).

Teneis el tutorial para actualizar el kernel a la versión 4.0.2 en esta entrada.

Una vez hecho tan solo debemos reiniciar y ¡listo!, si todo salió bien ya deberíamos poder disfrutar de nuestro touchpad, incluidas funciones multitouch como el desplazamiento con dos dedos, etc. Cualquier duda os anímo a que useis los comentarios. ¡Un saludo!

El touchpad de mi laptop no funciona correctamente, ¡solución!

Cambiar brillo en portatil con GNU/Linux

Buenas, hasta hace poco tenía instalado Xubuntu en mi portatil, y como algunos sabreis tiene un componente que permite cambiar facilmente el brillo de pantalla. Hace un par de dias decidí instalar Debian y por probar otro sistema de escritorio ligero le puse LXDE, y para mi sorpresa, este no cuenta con esa utilidad para cambiar el brillo de pantalla.

Busque por internet y ví que había mucha gente con el mismo problema, que no podía cambiar el brillo de pantalla en su laptop con LXDE, o otros escritorios que tampoco cuentan con esa utilidad.

Instalé varios programas que prometían cambiar mi brillo de pantalla (que por cierto estaba al máximo y ya se me empezaban a quemar las retinas), pero ninguno funcionó, así que me propuse crear mi propia solución; es un script hecho en bash que permite cambiar el brillo de pantalla de manera muy simple, tan solo escribiendo:

lumimod 75       #Ajusta el brillo de pantalla a 75%

Instrucciones para instalarlo:

  • Descarga y descomprime la última versión de LumiMod:
    wget https://github.com/migbau/lumimod/archive/master.zip
    unzip master.zip && rm master.zip && cd lumimod-master
  • Instala LumiMod:
    chmod +x install.sh
    sudo ./install.sh
  • Abre la ayuda de LumiMod para saber como empezar a usarlo:
    lumimod --ayuda 

Espero que os sirva, y, tanto si no es así como si sí funciona me haríais un gran favor diciéndomelo en los comentarios. Un saludo.

Página en GitHub del proyecto

Cambiar brillo en portatil con GNU/Linux

Error al montar disco duro externo NTFS en GNU/Linux

Buenas, regreso después de un largo tiempo de inactividad al blog, principalmente debido a que no me apetecía un pimiento postear nada…

Andaba yo hoy mismo haciendo un backup de mi usuario en Ubuntu, para instalar otro sabor del mismo, en este caso Gubuntu, o Ubuntu-Gnome, cuando me di cuenta que el backup ocupaba más de lo que podía meter en un pen-drive, así que decidí usar el disco duro externo de mi madre para tal tarea. Mi sorpresa vino cuando al intentar montar el disco en mi Linux me saltaba este mensaje:

Failed to mount '/dev/sdc5': Error de entrada/salida
NTFS is either inconsistent, or there is a hardware fault, or it's a
SoftRAID/FakeRAID hardware. In the first case run chkdsk /f on Windows
then reboot into Windows twice. The usage of the /f parameter is very
important! If the device is a SoftRAID/FakeRAID then first activate
it and mount a different device under the /dev/mapper/ directory, (e.g.
/dev/mapper/nvidia_eahaabcc1). Please see the 'dmraid' documentation
for more details.

Este error ocurre cuando intentamos montar una memoria con formato NTFS (es decir el formato que obtienen las memorias al formatearlas en Windows) en un Linux, cuando esta memoria ha sido extraida de un sistema Windows sin la opción de extracción segura (en Windows antes de extraer una memoria hay que pulsar en un botoncito que hay abajo a la derecha para extraer la memoria de forma segura).

Sí, una situación muy rebuscada, y como tal, la solución había de ser muy rebuscada. Una piosible solución a este problema es conectar el disco duro a un sistema Windiows, montarlo allí y luego extraerlo de forma segura, pero resulta que en mi casa no tengo ningún sistema Windows (¡viva GNU/Linux!, si me llegan dicen a mí hace dos años que en un futuro no tendría ningún Windows en casa no le creeía), así que me puse a buscar la manera de solucionar el error con el poder de los pinguinos.

Lo primero que hay que hacer es detectar cual es el disco que falla (si, tu sabes que es el que está conectado en el puerto derecho de tu compu, pero el ordenador no lo sabe), para ello yo usé GParted, si no lo tienes:

sudo apt-get install gparted

Luego tenemos que ver cual es nuestro disco duro, en mi caso el mío es de 75 GiB, con lo cual en el selector de arriba a la derecha de GParted seleccionamos el que tenga esa capacidad, y luego de ahí vemos cual es la partición que está formateada con NTFS, en mi caso es la que está seleccionada (/dev/sdc5)

Ventana de GParted

Bien, ahora tenemos que usar un programita que se llama ntfsfix, pero antes tenemos que instalar ntfs-3g (si usas Ubuntu ya lo tendrás instalado), sino:

sudo apt-get install ntfs-3g

Ahora tenemos que correr ntfsfix en nuestra partición, en mi caso:

sudo ntfsfix /dev/sdc5

Esto lo que hace es solucionar el error que tenía el disco duro por haberlo extraido de forma no segura (es posible que tenga ese error por otros motivos)

Ahora creamos una carpeta para el montaje de nuestro disco duro, la vamos a llamar temp:

sudo mkdir /media/temp

Y por último forzamos el montaje de la unidad, ejecutando el siguiente comando, substituyendo ‘/dev/sdc5’ por nuestra partición afectada:

sudo mount -t ntfs /dev/sdc5 /media/temp -o force

Y voilà, si todo ha salido bien, ya tendríamos nuestro disco montado y funcionando 😀

Espero que os haya servido este aporte, si es así o simplemente os gustó por favor compartid el blog, ¡gracias!

Error al montar disco duro externo NTFS en GNU/Linux

Como dar formato a un WriteLn que contiene un numero con coma flotante en Pascal

Durante estos días he estado practicando con Pascal y ayer estuve haciendo un programilla que calcula el área de un triangulo, y mientras lo hacía me encontré con un problema. La cosa es que, obviamente, el área del triangulo que devuelve el programa es un número real, osea que tenga decimales, lo que se traduce a la programación como un número con coma flotante (más concretamente dentro ya de Pascal, de tipo ‘real’, ‘double’ o ‘extended’, dependiendo de la magnitud de los números que esperemos obtener).

El problema es que cuando mediante la función de salida por pantalla estandar (‘writeln()’, es parecida a ‘puts()’ en C) hacemos que se escriba en pantalla esa variable que contiene el resultado de tipo flotante nos lo muestra en notación científica, pero no esa que todos aprendimos en primaria, no, algo como ‘2,2346634E-34’ (sí, se que es parecida en realidad).

writeln('El area del triangulo es: ',res);

Siendo ‘res’ la variable que contiene el resultado de la operación con coma flotante. Yo estaba haciendo un programa sencillo y no quería que hasta el número decimal más sencillo me hiciese sacar la calculadora para ver cuanto era, así que me puse a investigar por el internete, y ví que más gente tenía este problema así que por eso traigo aquí esta entrada. La primera conclusión a la que llegué es que se puede solucionar poniendo:

writeln('El area del triangulo es: ',res:0:15);

Esto lo que hace es que se muestre el número, ya sin notación científica, con un mínimo de cero dígitos en el lado entero de la coma y con exactamente diez dígitos en el lado decimal. Para que entendáis como funciona os voy a poner un par de ejemplos:

//Esto hace que haya mínimo 10 digitos delante de la coma y exactamente 10 detras:
writeln('El area del triangulo es: ',res:10:10);
//Si res es 21.456 devuelve 0000000021.4560000000

//Esto hace que haya mínimo 2 digitos delante de la coma y exactamente 6 detras:
writeln('El area del triangulo es: ',res:2:6);
//Si res es 2124.45656668 devuelve 2124.456567 (a partir del último decimal se redondea)

Como veis este método no resulta una solución perfecta en absoluto, ya que, no solo aparecen ceros hasta que se rellane el total de digitos decimales, sino que si la cantidad de cifras decimales fuese mayor que la impuesta se redondearía al llegar a límite.

Más tarde encontré la función ‘format()’ de la unidad sysutils (puedes encontrar información de dicha función en la documentación de FreePascal). Está función permite dar formato de forma parecida a la que lo hace ‘printf()’ en C, pero mucho más liosa y no me solucionó nada.

Al final la solución fué mucho más simple y se me ocurrió en un momento de lucidez después de no encontrarla por internet. Es tan simple como pasar la variable a tipo ‘String’, antes de mostrarla en pantalla, de esa manera no será de tipo ‘double’ ni nada parecido, sino que será una cadena de texto. Recordad que antes debemos declarar la variable de tipo ‘string’. Podemos darle un limite de caracteres (uno muy grande ya que ahora no nos lo rellenará con ceros), ya si no lo hacemos y el resultado de la operación es un número irracional infinito el programa se tildará. Yo a la nueva variable la llamé ‘fres’. Luego para pasar el contenido de ‘res’ como String a ‘fres’ hacemos lo siguiente:

fres:= floattostr(res);
writeln('El area del triangulo es: ',fres);

Hemos utilizado la función ‘FloatToString()’ que de manera muy simple nos pasa un número de tipo flotante (ya sea ‘double’, ‘real’, etc) a cadena de texto.

Espero que os haya gustado y os haya sido útil este tutorial y si es así podéis darme un +1 o compartir en Twitter o Facebook. Si os gusta el blog abajo hay un formulario para seguirlo por correo electrónico. ¡Hasta la próxima!

Como dar formato a un WriteLn que contiene un numero con coma flotante en Pascal

Problema con los DNS de Blogger

Buenas, durante estos días he estado realizando el mantenimiento del blog para tenerlo activo ya en la web definitivamente y me he topado con un problema que me ha sacado bastante de quicio: los DNS. Los malditos DNS que ofrece Blogger para que tu blog aparezca en tu propio dominio web; estos son del tipo CNAME y los debes incluir en los DNS de tu hosting para que tu blog aparezca publicado, uno es algo así como ‘Host:www Apunta a:ghs.google.com’ y el otro es parecido a ‘Host:v4bgu9hukk Apunta a:uhu6pjk5jkl.v4.googlehosted.com’.

Pues, aparte de que estos DNS tardan la vida en propagarse (puedes verificar si ya están propagados en whatsmydns) tu entras en tu web y el contenido del blog no aparece, en mi caso aparecía la pantalla de bienvenida del hosting. Bien, puede que a vosotros os resulte súper lógica la solución pero para mi ha sido una tortura estos días; el problema es que el CNAME de blogger tiene host en www, eso quiere decir que para acceder al blog hay que incluir el www.tudominio.com (cómo para en muchas webs que utilizan algún CMS, vease Métropolis Center, que sin www. antes no aparecía).

No me preguntéis por qué sucede esto ya que no lo se, es posible que a Google no le guste que se pierda el www al principio de cada web (espero que no sea esto xD, si alguno sabéis la respuesta ponedla en un comentario más abajo); el caso es que se como solucionarlo, ya que la mayoría de la gente al navegar por internet no pone ese prefijo y muchas personas no podrían entrar en el blog. Simplemente hay que crear un archivo llamado ‘index.php’ y subirlo por FTP a la carpeta ‘public_html’ de tu hosting. El archivo únicamente debe contener lo siguiente:

<?php
header("Location:http://www.tudominio.com");
?>

Cambiando “tudominio.com” tu propio dominio; esto provocará una redirección automática de tu web sin el www a tu blog. La redirección también se puede hacer con otros métodos (más métodos) pero el que os he puesto, al ser el que utiliza php es, creo, el que más rápido realiza la redirección, con lo cual mi preferido.

Y bueno, ya sabéis, cualquier duda o aporte la ponéis en un comentario y no olvidéis compartirlo si os ha servido. ¡Hasta la próxima! 

Problema con los DNS de Blogger