Translate

martes, junio 27, 2017

Orange Pi IoT 2G: Sistema operativo de sólo lectura

Orange Pi IoT 2G : Tutorial sistema operativo de sólo lectura

Trabajar con la imagen en descarga:
1.Descargar imagen S.O lista para trabajar en modo Read Only con la Orange Pi IoT 2G:
 Usuarios:
        root/orangepi
        orangepi/orangepi
  1.1Imagen con Ubuntu 16.04 preparada con el S.O en modo ReadOnly:
  1.2 Copiarla a SD a partir de 2GB (como root):
        dd if=imgsurfero75v2RO.img | pv | dd of=/dev/sdb
  1.3:
     El wifi está preparado para conectar con el hotstop orangepi/orantgepi, de otro modo tardará 5 minutos en arrancar.
     Si queremos nuestro hotspot wifi, como root:
       mount -o remount,rw /
        nano /etc_org/network/interfaces           (modificar conexion wifi)
     


TUTORIAL, Orange pi IoT 2G READ ONLY HOWTO
Recursos libres en la Opi 2G con S.O en read only:



Instalar software:
apt-get install dphys-swapfil

Desactivar swap:
dphys-swapfile swapoff
dphys-swapfile uninstall
update-rc.d dphys-swapfile disable

Instalar UnionFS, que nos va a permitir crear sistemas de ficheros en la RAM (Como en los Live-CD):

apt install unionfs-fuse
Vamos a crear un script que se encargará de montar en un sistema de ficheros unionfs los directorios /etc y /var. Creamos el fichero :
nano /usr/local/bin/mount_unionfs
Con el siguiente código:

 #!/bin/sh
 DIR=$1
 ROOT_MOUNT=$(awk '$2=="/" {print substr($4,1,2)}' < /etc/fstab)
 if [ $ROOT_MOUNT = "rw" ]
 then
   /bin/mount --bind ${DIR}_org ${DIR}
 else
   /bin/mount -t tmpfs ramdisk ${DIR}_rw
   /usr/bin/unionfs-fuse -o cow,allow_other,suid,dev,nonempty ${DIR}_rw=RW:${DIR}_org=RO ${DIR}
 fi
Lo hacemos ejecutable con chmod +x /usr/local/bin/mount_unionfs
Editar /etc/fstab y modificar los puntos de montaje a modo sólo lectura (ro) y añadiendo /etc y /var. Debe quedar más o menos así:
nano /etc/fstab


proc            /proc           proc    defaults          0       0
/dev/mmcblk0p2  /               ext4    ro,noatime        0       1
mount_unionfs   /home           fuse    defaults          0       0
mount_unionfs   /etc            fuse    defaults          0       0
mount_unionfs   /var            fuse    defaults          0       0
none            /tmp            tmpfs   defaults          0       0

Preparamos los directorios:
cp -al /home /home_org 
mkdir /home_rw
cp -al /etc /etc_org
mv /var /var_org
mkdir /etc_rw
mkdir /var /var_rw
reboot

En este punto nuestra Orange Pi debe ser modo lectura, lo comprobamos asi:
mount
Se tiene que ver algo como esto:

/dev/mmcblk0p2 on / type ext4 (ro,noatime)

unionfs-fuse on /var type fuse.unionfs-fuse (rw,relatime,user_id=0,group_id=0,default_permissions,allow_other)
unionfs-fuse on /home type fuse.unionfs-fuse (rw,relatime,user_id=0,group_id=0,default_permissions,allow_other)
unionfs-fuse on /etc type fuse.unionfs-fuse 
....
Captura de pantalla en la Orange Pi IoT 2G, del mandato mount:


Indica que el sistema de ficheros esta en modo lectura

Opcionalmente podemos limpar los directorios de log:
mount -o remount,rw /
for f in $(find . -name \*log); do > $f; done
cd /var_org/log
rm -f *.gz
reboot

Con un reboot ya esta todo listo!
reboot

Si quieres instalar algún paquete ejecuta lo siguiente (Este paso del tutorial original a mí no me ha funcionado):

mount -o remount,rw /
apt update
apt install stress

                                                                                                             

viernes, junio 16, 2017

Distribución GNU/Linux para Orange Pi 2G IoT

Distribución GNU/Linux para Orange Pi 2G IoT 
(Documentacion, actualizándose)

Ubuntu 16.04 
Kernel: 3.10.62-rda8810
U-Boot rda8810. 



Usar una MicroSD compatible de, almenos 4GB
       
   Usuarios: 
             root/orangepi
             orangepi/orangepi
  
2.Para grabar la imagen:
         2.1: Desde GNU/Linux:
           dd if=ImagenXxx.img |pv|dd of=/dev/sdb
         2.2:Desde Windows (Win3diskimager):
          https://sourceforge.net/projects/win32diskimager/

3.Conexión Datos:
         
           
           -Conexión con AP Wifi
      Está preconfigurado para acceder a un AP wifi orangepi password orangepi

4. Menú configuración :
      -Menu general:


 
  -Conexión ssh inverso:



 -Conexión bluetooth:









domingo, junio 11, 2017

Orange PI 2G IoT - Bluetooth 2.1 HOWTO, Como usarlo


Para poder usar la función de bluetooth 2.1 en nuestra opi iot 2g

1.Debemos instalar las utilidades para bluetooth :
     apt-get install bluez-tools
2.Debemos compilar el siguiente programa:
                  git clone https://github.com/RDA8810/RDA5991_BT_patchram
                  gcc bt_init.c -o bt_init
                      ./bt_init
                      Ahora Iniciamos el controlador:
                         hciattach -s 921600 /dev/ttyS1 any 921600 flow

         
3.para Emparejar dispositivos (todavía probando):
                                     $bluetoothctl
                                       [bluetooth]# power on
                                      Changing power on succeeded
                                     [bluetooth]# discoverable on
                                     Changing discoverable on succeeded
                                     [bluetooth]# pairable on
                                    Changing pairable on succeeded
                                     [bluetooth]# agent NoInputNoOutput
                                     Agent registered
                                    [bluetooth]# default-agent 
                                     Default agent request successful
                 

             
                  

sábado, mayo 20, 2017

Salidas GPIO Orange PI 2G IoT



Salidas GPIO Orange PI 2G IoT


En el anuncio de la Orange Pi 2G IoT dicen  "40 pins Header Compatibe witch Raspberry pi B+"
Voy a comparar los interfaces.

1.Orange Pi 2G IoT, SoC RDA8810:




Probando comunicación con los pins GPIO (pruebas, gracias a la ayuda del grupo de Telegram):

1.Bajar ultima distro, yo uso Ubuntu Server:

http://www.orangepi.org/downloadresources/

2. Aplicar modulo GPIO:

        #cd /lib/modules/3.10.62-rel5.0.2/kernel/drivers/gpio
        #insmod gpio-OrangePiRDA.ko

3. Con el comando dmesg vemos el log y como queda aplicado el modulo:
                [ 1299.883361] GPIO name B24
                [ 1299.883789] GPIO_INIT finish used!

4.De momento han activado un pin (el 7 que corresponde con el GPIO_B24), aparece tras aplicar el modulo del punto numero 2, y está en /sys/class/gpio_OrangePi/ .Si queremos encender / apagar un led debemos usar el pin GPIO numero 7 (GPIO_B24):

             

Encendio: /sys/class/gpio_OrangePi/B24# echo "1">data

Apagado:/sys/class/gpio_OrangePi/B24# echo "0">data




NOTA IMPORTANTE (otra forma de trabajar con los gpio de esta placa): 

Gracias al trabajo de Reinhard  http://ec.hobbykompetenz.de/index.php/2017/06/07/gpio/ también se puede trabajar sobre los puertos GPIO sin la carga del modulo GPIO en memoria en tal caso para encender/apagar el led sería usando el pin 7 de la placa (GPIO_B24) que en el sistema de archivos es gpio56:
Hay que habilitar en el sistema de archivos el puerto GPIO al pin 7 de la placa:
echo "56" > /sys/class/gpio/export

Apagar LED:  echo "in" > /sys/class/gpio/gpio56/direction
Enceder LED1: echo "out" > /sys/class/gpio/gpio56/direction

Para consultar el estado de entrada/salida del puerto: cat  cat /sys/class/gpio/gpio56/value

He realizado un script para que parpadee el LED (blink.sh):

#!/bin/sh

echo 56 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio56/direction

while true
do
        echo 1 > /sys/class/gpio/gpio56/value
        sleep 1
        echo 0 > /sys/class/gpio/gpio56/value
        sleep 1
done


Desde el grupo de telegram nos han enseñado como manejar relays o swiches mediante el GPIO e la opi 2g iot:

i, por supuesto, conecte una placa de relays generica de las que se usan para Arduino, como la de este enlace, conecte el pin VCC al 2 de la Opi, GND al 6 de la Opi y IN1 al 7 de la Opi. https://articulo.mercadolibre.com.ar/MLA-620857002-modulo-de-relee-relay-opto-2-canales-5v-10a-arduino-pic-ptec-_JM

luego cada vez que arranca hay que ejecutar
echo 56 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio56/direction

Y luego:
Encender salida
echo 1 > /sys/class/gpio/gpio56/value

Apagar salida
echo 0 > /sys/class/gpio/gpio56/value

 Trabajando con Phyton y GPIO en Orange Pi IoT 2G:

He creado un repositorio en GITHUB con codigo para trabajar con GPIO en pyton:




Hacer que funcione el LCD dando un mensaje del sistema (por ejemplo la dirección IP):

1-
  Crear el directorio /opt/python con los los siguientes ficheros:
    wget https://raw.githubusercontent.com/txurtxil/OpiIoTGPIO/master/lcd2.sh
    wget https://raw.githubusercontent.com/txurtxil/OpiIoTGPIO/master/lcd2.py
Damos permisos de ehecucion a los dos ficheros:
          chmod 777 lcd2.sh
           chmod 777 lcd2.py

2- Mandamos a crontab (como root) ejecutar el script lc2.sh cada 2 minutos:
        crontab -e
        */2 * * * * /opt/python/lcd2.sh


Nota:
En este script sacaremos la información de IP en el LCD pero podemos modificar el script para visualizar todos lo que nos interese (jugando con comandos del sistema operativo y meterlos en una variable)