Estoy trabajando con un dispositivo con pocos recursos que corre linux.
Su nombre es Milk V DUO S.
No existe mucha documentacion al parecer sobre el pequeno dispositivo porque fue lanzado recientemente.
Este aparato puede conectarse a redes wifi y pude comprobar que funciona correctamente.
El cliente de wifi que viene incluido con la distribucion de linux de este dispositivo es wpa_supplicant.
Mi objetivo es que al conectar el dispotivo a una fuente de poder este inicie con normalidad y se conecte a la red wifi usando los datos que puse en su archivos de configuracion de forma automatica.
/etc/wpa_supplicant.conf
Código
ctrl_interface=/var/run/wpa_supplicant ap_scan=1 network={ ssid="Martinez" psk="123456789" key_mgmt=WPA-PSK }
Luego al utilizar el comando:
Código
puedo conectarme de manera exitosa a la red wifi de mi casa de forma manual introduciendo ese comando en la terminal. Pero yo necesito que se conecte automaticamente luego de encender.
wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant.conf
En base a lo que pude investigar en los archivos de el dispositivo, utiliza BusyBox como sistema de inicio.
Código
cat /etc/inittab # /etc/inittab # # Copyright (C) 2001 Erik Andersen <andersen@codepoet.org> # # Note: BusyBox init doesn't support runlevels. The runlevels field is # completely ignored by BusyBox init. If you want runlevels, use # sysvinit. # # Format for each entry: <id>:<runlevels>:<action>:<process> # # id == tty to run on, or empty for /dev/console # runlevels == ignored # action == one of sysinit, respawn, askfirst, wait, and once # process == program to run # Startup the system ::sysinit:/bin/mount -t proc proc /proc ::sysinit:/bin/mount -o remount,rw / ::sysinit:/bin/mkdir -p /dev/pts /dev/shm ::sysinit:/bin/mount -a ::sysinit:/sbin/swapon -a null::sysinit:/bin/ln -sf /proc/self/fd /dev/fd null::sysinit:/bin/ln -sf /proc/self/fd/0 /dev/stdin null::sysinit:/bin/ln -sf /proc/self/fd/1 /dev/stdout null::sysinit:/bin/ln -sf /proc/self/fd/2 /dev/stderr ::sysinit:/bin/hostname -F /etc/hostname # now run any rc scripts ::sysinit:/etc/init.d/rcS # Put a getty on the serial port # console::respawn:/sbin/getty -L console 0 vt100 # GENERIC_SERIAL console::respawn:/sbin/getty -L console 115200 vt100 -n -l /usr/local/bin/autologin # Stuff to do for the 3-finger salute #::ctrlaltdel:/sbin/reboot # Stuff to do before rebooting ::shutdown:/etc/init.d/rcK ::shutdown:/sbin/swapoff -a ::shutdown:/bin/umount -a -r
Los primeros programas en ejecutarse se encuentran en el directorio /etc/init.d
Código
S01syslogd S20urandom S40network S50dropbear rcK S02klogd S30dbus S41dhcpcd S80dnsmasq rcS S02sysctl S40bluetooth S49ntp S99user
Al parecer se ejecutan por orden numerico de menos a mayor.
El archivo S99user dice que se correran los siguientes scripts:
Código
#!/bin/sh ${CVI_SHOPTS} # # Start firmware # export USERDATAPATH=/mnt/data/ export SYSTEMPATH=/mnt/system/ case "$1" in start) echo "init mpp system..." if [ -d $SYSTEMPATH/ko ]; then sh $SYSTEMPATH/ko/loadsystemko.sh fi echo "Starting app..." if [ -f $SYSTEMPATH/duo-init.sh ]; then . $SYSTEMPATH/duo-init.sh & fi if [ -f $SYSTEMPATH/blink.sh ]; then . $SYSTEMPATH/blink.sh & fi if [ -f $SYSTEMPATH/usb.sh ]; then . $SYSTEMPATH/usb.sh & fi if [ -f $USERDATAPATH/auto.sh ]; then usleep 30000 . $USERDATAPATH/auto.sh & exit 1 fi if [ -f $SYSTEMPATH/auto.sh ]; then usleep 30000 . $SYSTEMPATH/auto.sh & fi ;; stop) ;; restart|reload) ;; *) echo "Usage: $0 {start|stop|restart}" exit 1 esac exit $?
duo-init.sh, blink.sh, usb.sh, auto.sh en los directorios /mnt/data/auto.sh y /mnt/system/auto.sh
En base a la documentacion de el dispositivo si yo quiero que un script sea ejecutado luego de que el dispositivo encienda solo debo agregar el comando
Código
wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant.conf
a el archivo /mnt/system/auto.sh quedando de la siguiente forma
Código
#!/bin/sh wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant.conf &
Pero desafortunamente no funciono, intente hacer lo mismo con el archivo /mnt/data/auto.sh pero tampoco funciono.
He intentado un par de cosas mas pero honestamente no quiero hacer esto mas confuso.
Gracias de antemano.
Aqui una imagen de el dispotivo: