lunes, abril 03, 2023

Hostapd: kernel reports: (extension) channel is disabled

Estaba intentando levantar un Access Point con VPN en una Raspberry Pi 1 Model B. El kernel soporta mi Wifi Dongle sin problemas:

lsusb

Bus 001 Device 004: ID 148f:2070 Ralink Technology, Corp. RT2070 Wireless Adapter

Usé esta guía:

https://pimylifeup.com/raspberry-pi-wireless-access-point/

Pero al correr el comando:

sudo systemctl start hostapd

Me daba el siguiente error:

pi@raspi1:~ $ sudo systemctl start hostapd

Job for hostapd.service failed because the control process exited with error code.

See "systemctl status hostapd.service" and "journalctl -xe" for details.

Mi dongle únicamente soporta 802.11g y sin querer estaba yo pidiéndole que soportara 802.11n:


La línea "ieee80211n=1" no debe colocarse si el módulo no lo soporta.

Una vez removida la línea ya pude encontrar mi SSID en el aire.

El comando "journalctl -xe" no es muy claro al dar el log de error, pero lo dejo aquí por si alguien más encuentra tal problema.

Apr 03 18:49:34 raspi1 hostapd[1865]: Configuration file: /etc/hostapd/hostapd.conf

Apr 03 18:49:35 raspi1 hostapd[1865]: nl80211: kernel reports: (extension) channel is disabled

Apr 03 18:49:35 raspi1 hostapd[1865]: Could not set channel for kernel driver

Apr 03 18:49:35 raspi1 hostapd[1865]: Interface initialization failed

Apr 03 18:49:35 raspi1 hostapd[1865]: wlan0: interface state UNINITIALIZED->DISABLED

Apr 03 18:49:35 raspi1 hostapd[1865]: wlan0: AP-DISABLED

Apr 03 18:49:35 raspi1 hostapd[1865]: wlan0: Unable to setup interface.

Apr 03 18:49:35 raspi1 hostapd[1865]: wlan0: interface state DISABLED->DISABLED

Apr 03 18:49:35 raspi1 hostapd[1865]: wlan0: AP-DISABLED

Apr 03 18:49:35 raspi1 hostapd[1865]: wlan0: CTRL-EVENT-TERMINATING

Apr 03 18:49:35 raspi1 hostapd[1865]: hostapd_free_hapd_data: Interface wlan0 wasn't started

Apr 03 18:49:35 raspi1 hostapd[1865]: nl80211: deinit ifname=wlan0 disabled_11b_rates=0

domingo, abril 02, 2023

Cómo corregir horario en México en Raspberry Pi (Linux)

Después de los cambios de horario con los que México ya no cambiará la hora desde Octubre de 2022 algunos sistemas Linux no están respetando tal cambio.

Mi Raspberry Pi amaneció hoy con una hora adelantada y no se corrigió con raspi-config.

Hay que hacer más pasos:

  • Verifica qué hora tiene tu equipo

pi@raspberrypi:~ $ timedatectl
               Local time: Sun 2023-04-02 11:44:30 CDT
           Universal time: Sun 2023-04-02 16:44:30 UTC
                 RTC time: n/a
                Time zone: America/Mexico_City (CDT, -0500)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no
  • Si no es la correcta, corrige tu zona horaria a America/Mexico_City (CST, -0600). Selecciona Localization, Americas, Mexico City.
sudo raspi-config
  • Si aún así la hora sigue mostrándose mal, corre los siguientes comandos:
sudo apt-get update
sudo apt update
apt list --upgradable
  • Es posible que en la lista de apt se muestre que tu paquete de "tzdata" necesite ser actualizado.

  • Instálalo o actualízalo.
sudo apt install tzdata

...

Current default time zone: 'America/Mexico_City'
Local time is now:      Sun Apr  2 10:49:26 CST 2023.
Universal Time is now:  Sun Apr  2 16:49:26 UTC 2023.
Run 'dpkg-reconfigure tzdata' if you wish to change it.

Una vez hecho eso, corre timedatectl de nuevo y la hora de tu equipo ya debería ser la correcta.


sábado, agosto 08, 2020

Guía rápida para usar Tortoise HG (Mercurial)

Si quieres tener un control de versiones de un proyecto puedes usar muchas herramientas. Existe el súper popular git o también Mercurial a través de TortoiseHg.

En esta guía rápida veremos cómo usar Tortoise HG para:
- Respaldar un proyecto
- Agregarle cambios
- Ignorar archivos
- Revertir cambios
- Hacer un branch al proyecto

Instala Tortoise HG

Para instalarlo debes descargarlo de su página:

https://tortoisehg.bitbucket.io

Respalda un proyecto

Mi recomendación es que tu proyecto y todos sus archivos existan en un subfólder:

└───ejemplo        ---> Fólder superior
    └───ejemplo    ---> Subfólder
            code.c

Esto es porque Mercurial genera un fólder oculto llamado .hg que se encarga de tener el historial de todos los archivos y sus cambios. No querrás que este fólder aparezca en tu IDE (Eclipse o Netbeans, como ejemplo) porque tiene muchísimos archivos que te darán lata. Mantenlo aparte.

Una vez que definiste el fólder superior con el fólder dentro de tu proyecto puedes abrir TortoiseHgG. Debes dar de alta un usuario y un email, aún cuando no vayas a hacer commits (subir código) a otros servidores. Entra a Settings y dalo de alta. Un ejemplo: John Doe <johndoe@fake.com>.

Selecciona New Repository...

Elige el fólder superior:

Dale Create sin cambiar las demás opciones.

Te mostrará una ventana con los contenidos aún no guardados de tu proyecto.

El branch default aún no existe pero podemos inicializarlo si se selecciona. Nos dirá qué archivos nuevos entrarán al control de versiones. En este momento muestra la versión +/1 porque no se ha hecho nada aún.

Mi proyecto sólo tiene un archivo.c dentro del fólder ejemplo. También se creó en automático un archivo llamado .hgignore. Ese archivo te será de utilidad para cuando quieras ignorar archivos en tu control de versiones. Por ejemplo podrías ignorar todos los .o que se generan cuando compilas tus C.

Hagamos nuestro primer commit. Selecciona ambos archivos poniéndoles la palomita. En el cuadro de la derecha pon un comentario para tu commit. A mí me gusta ponerle una versión, pero puede ir cualquier texto. Finalmente presiona Commit.

Te pedirá que pongas tu nombre, dile que sí. Te preguntará si quieres agregar los archivos seleccionados, dile que también.

Y listo, tendrás un respaldo local de tu primer versión del proyecto. Este existirá sobre el branch default.

Agrega cambios a tu proyecto

Tu proyecto siempre está mejorando... digamos que haces un cambio en un archivo... Tortoise se dará cuenta cuando presionas el botón de Refresh mientras estás sobre el *Working directory*. En mi ejemplo actualicé el texto del printf. Te lo reportará al dar click sobre ese archivo. Si tuvieras instalado un visor de diferencias puedes usarlo dando click derecho sobre el archivo.

Como ese cambio queremos respaldarlo podemos entonces hacer un nuevo commit. Dale a la palomita, introduce un texto para el commit y dale Commit.

Ignorar cambios

Ignorar archivos o fólders es muy fácil. Al darle refresh Tortoise no te mostrará esos archivos. En mi ejemplo agregué un code.o que simula la salida de la compilación del C y una imagen. Sólo me interesa respaldar la imagen así que le daré click derecho al .o y le diré a Tortoise que lo ignore. Y seleccionaré la imagen para que me la guarde en un nuevo commit.

Verás que el archivo .hgignore se actualizó también. Asegúrate de que también tiene palomita para que en los siguientes commits Tortoise siga ignorando ese code.o. Puedes usar comodines e ignorar todos los .o e incluso puedes ignorar fólders completos. Es cuestión de que experimentes para que veas cómo lograrlo.

Revertir cambios

Digamos que cometiste un error o que simplemente quieres ir a una versión anterior de tu código. En mi ejemplo cambié el texto de code.c.

Simplemente doy click derecho al archivo que quiero restaurar y le digo Revert.

Revert with backup - creará una copia temporal del archivo actual por si te arrepientes y restablece el archivo.
Discard changes - sólo restablece el archivo.

Regresar a un commit anterior

Es posible regresar a un snapshot de tu proyecto. Debes ser cuidadoso porque si hay archivos que quieras mantener debes guardarlos en un commit antes de moverte a uno anterior. En mi ejemplo me iré a la versión 0.1. Sólo hay que dar click derecho sobre el commit deseado y darle Update...

Usa las opciones que muestro a continuación... recuerda: borrará todo cambio actual para irse al pasado.

La grafiquita ya muestra cómo estamos sobre un commit anterior y nos dice que no es el head.

Creando un nuevo branch

Digamos que ésta versión era estable y que quieres continuar trabajando sobre ella, pero quieres que tenga otro branch para que sepas sobre qué proyecto estás. Creemos el branch y llamémosle stable. Da click en Branch: default y dile que quieres uno nuevo.

Ingresa un texto para el commit. En Mercurial los branches crean commits. En git no.

Ya estando en tu nuevo branch puedes hacer nuevos commits o regresarte al branch default. Recuerda guardar tus cambios con commits antes de moverte en el tiempo.

Y esta es la guía rápida. Dominar Tortoise no toma tiempo. Sólo ten cuidado cuando te muevas entre branches y aprovecha la herramienta al máximo.