Mostrando entradas con la etiqueta linux. Mostrar todas las entradas
Mostrando entradas con la etiqueta linux. Mostrar todas las entradas

sábado, 7 de febrero de 2026

El mundo del X96 mini

 

El mundo del X96 mini

Al intentar instalar el servidor Linux en un segundo X96,  me encontré que no arrancaba.
Las dos cajas X96 parecían iguales, pero una arrancaba y la otra no.
El sistema Android instalado era diferente, y en un test me salió que una tenía 2G y la otra 4G de memoria RAM, y eso que en la etiqueta marcaba 2G RAM y 16G de almacenamiento.
Todo era raro. Además en el mismo test una marcaba p281, y en la otra p282.
La mejor manera era abrir las cajas y ver lo que había dentro.

La una es la versión de placa V2.2 y la otra V2.3
Tiene los mismos componentes, y casi la misma disposición.
La única diferencia es el fabricante de algún CHIP.
Personalmente en la versión V2.2 utiliza mejores componentes y el CI tiene mejor calidad.
En procesador en ambas es el S905W , y el chip de Wifi el SV6051P.

En la caja que no arrancaba la tarjeta SD con Linux, instalé un nuevo firmware.
Como estas caja tienen unos 6 años me constó encontrar los firmware  para el x96 mini.
Aunque existen muchos enlaces, al intentar bajar los ficheros, los enlaces estaban rotos.
Al final encontré estos:
X96mini_Plus1_20220530-1713.img
X96mini_RP_20201016-1431.img
X96mini_RP_20230626-1034.img
X96mini_RP_20240520-1634.img
X96W_P_20230401-1513.img
Mediante un cable de doble USB, y junto la aplicación Amlogic Burning Tool, solo funciona en Windows, instalé diferentes Android.
Aunque existen muchos vídeos, los pasos son los siguientes:
  • Instalar Amlogic Burning Tool, y ejecutarlo (en mi caso win7).
  • Importar firmware.
  • Botón START.
  • Con el X96 sin alimentación (no 5V).
  • Pulsar el botón que está dentro del AV, y sin soltar conectar el cable USB al puerto blanco del x96.
  • Soltar el botón pulsado cuando haya reconocido la conexión.
  • Esperar la instalación del firmware (2-4 minutos).
Al reinstalar android, se habilitó la posibilidad de que pudiese arrancar desde la SD.

El proyecto ARMBIAN es que lleva todo el trabajo.
Imágenes Linux hay muchas, el problema es encontrar los enlaces, que se mueven o desaparecen muchos, en mi caso las imágenes preferidas son:
ARMBIAN_X96_MINI/armbianIMG/Armbian_20.05.3_Arm-64_buster_current_5.7.0-rc2_desktop_20200425.img.xz  (preferida)
ARMBIAN_X96_MINI/armbianIMG/Armbian_20.10_Arm-32_focal_current_5.9.0_desktop.img.xz
ARMBIAN_X96_MINI/armbianIMG/Armbian_20.10_Arm-64_bullseye_current_5.9.0_desktop.img.xz
ARMBIAN_X96_MINI/armbianIMG/Armbian_20.10_Arm-64_buster_current_5.9.0.img.xz
ARMBIAN_X96_MINI/armbianIMG/Armbian_20.10_Arm-64_focal_current_5.9.0_desktop.img.xz
Un enlace donde existen muchas es https://armbian.lv.auroradev.org/archive/aml-s9xx-box/archive/ , aunque igual ya no existen.

Grabar la imagen en una SD (que sea rápida tipo 10) de como mínimo 8G con balenaEtcher, o con cualquier otra aplicación.
Retire la microSD de forma segura y vuelva a insertarla

Configurar la tarjeta MicroSD para Armbian

    Abra la partición legible de la tarjeta microSD en Explorer
    Cambie el nombre del archivo apropiado de abajo a u-boot.ext en la raíz de la tarjeta SD

    u-boot-s905 (para s905)
    u-boot-s905x-s912 (para s905x y s912)
    u-boot-s905x2-s922 (para s905x2 y s922)

    En mi caso hago una copia de u-boot-s905x-s912 (para s905x y s912) y lo renombro a u-boot.ext.
   
    Edite /extlinux/extlinux.conf en un editor de texto
        Comente las líneas rk-3399 agregando #
        Descomente las líneas aml s9xx FDT y APPEND eliminando #
        Actualice la línea FDT para que apunte a un archivo .dtb que funcione para su dispositivo
    Para el X96mini:

LABEL Armbian
LINUX /zImage
INITRD /uInitrd

FDT /dtb/amlogic/meson-gxl-s905x-p212.dtb
APPEND root=LABEL=ROOTFS rootflags=data=writeback rw console=ttyAML0,115200n8 console=tty0 no_console_suspend consoleblank=0 fsck.fix=yes fsck.repair=yes net.ifnames=0

   
Salvar y expulsar de forma segura

Inserte la tarjeta microSD en la caja de Android TV
   
Este paso algunas veces no hace falta.
Arrancando  Armbian por primera vez :
   Con un palillo o similar, se introduce en la conexión AV y se pulsa un botón interior.
    A la vez se conecta el adaptador de corriente a la caja de Android TV.
    Esto solo hay que hacerlo la primera vez que arranca Armbian.

En mi caso si tengo insertado el adaptador wifi, o algún otro tipo de picho USB, no me arranca.
Cada imagen distinta de Armbian tiene sus características y formas de arrancar.
La contraseña por defecto es 1234 , luego es mejor cambiarla.
Una vez en consola (mejor en consola de texto CTRL+Alt+F2) configurar el entorno con armbian-config .
No me funciona el WIFI con el adaptador( SV6051P) que viene en el x96, pero si pinchas uno al USB te funciona.

Ahora el trabajo y la imaginación es vuestra.
Recordar los enlaces aparecen y desaparecen, y seguro que todas la imágenes no sean seguras.
Las imágenes que muestro las tengo guardas, si alguno las quiere que me mande algún mensaje.

Espero que este artículo os haya parecido interesante.

Saludos.
Juan Galaz


Bibliografía:
http://www.seta43.duckdns.org/x96mini.html
https://www.youtube.com/watch?v=A_V50MuJ7DE
https://www.sigmdel.ca/michel/ha/aml912/linux_on_aml912_en.html
https://docs.armbian.com/Hardware_Allwinner/
https://i12bretro.github.io/tutorials/0316.html

Instalar en la raspberry Pi servidores. RaspServer
Servidor WEB con Orange PI (raspberry pi) y NGINX - SERVIDOR_Orangepi
Servidor DELL R200. SERVIDOR










jueves, 26 de diciembre de 2024

Linux - Cambiar de disco duro - Migrar particiones

  Página principal

Linux
Cambiar de disco duro
Mantener los datos



El otro día tuve la necesidad de cambiar el disco duro por otro de mayor capacidad.
Pero quería conservar toda la instalación y datos de la partición Linux.
Lo que si quería es que la partición Linux tuviese más capacidad de almacenamiento.
Mirando por internet, encontré la solución.

Mi caso es un poco atípico, debido a que tengo 2 discos duros con varias particiones:
- El disco 1 sda es un disco (magnético) de 1T = 931,51 GiB
  Este disco duro lo utilizo principalmente para DATOS, aunque tengo varias particiones con WIN10 y Linux.
  He de comentar que Windows10 es bastante lento en discos magnéticos, pero es como lo tengo.
-El disco 2 sdb es un disco SSD de 465,76 GiB.
 Este disco duro lo utilizo para los sistemas operativos, ya sean varios Linux, como un Windows7.

Empecemos.

Desde una instalación Linux Live entramos en consola y siendo root realizaremos todas las operaciones.

Lo primero es identificar los discos y las particiones.
root@TRABA:/home/seta# /sbin/fdisk -l
Disco /dev/sdb: 465,76 GiB, 500107862016 bytes, 976773168 sectores
Modelo de disco: CT500BX500SSD1 
Unidades: sectores de 1 * 512 = 512 bytes
Tamaño de sector (lógico/físico): 512 bytes / 512 bytes
Tamaño de E/S (mínimo/óptimo): 512 bytes / 512 bytes
Tipo de etiqueta de disco: dos
Identificador del disco: 0x2c019ec5

Disposit.  Inicio  Comienzo     Final  Sectores Tamaño Id Tipo
/dev/sdb1  *           2048    206847    204800   100M  7 HPFS/NTFS/exFAT
/dev/sdb2            206848 178053119 177846272  84,8G  7 HPFS/NTFS/exFAT
/dev/sdb3         178055166 976771071 798715906 380,9G  f W95 Ext'd (LBA)
/dev/sdb5         178055168 335341567 157286400    75G 12 Compaq diagnostics
/dev/sdb6         335343616 352120831  16777216     8G 82 Linux swap / Solaris
/dev/sdb7         352122880 477951999 125829120    60G 43 desconocido
/dev/sdb8         477954048 603783167 125829120    60G 83 Linux
/dev/sdb9         603785216 682260479  78475264  37,4G 83 Linux
/dev/sdb10        740503552 802879487  62375936  29,7G 83 Linux
/dev/sdb11        802881536 862699519  59817984  28,5G 83 Linux
/dev/sdb12        862701568 914946047  52244480  24,9G 83 Linux
/dev/sdb13        914948096 976771071  61822976  29,5G 83 Linux
/dev/sdb14        682262528 740501503  58238976  27,8G 83 Linux

Las entradas de la tabla de particiones no están en el orden del disco.


Disco /dev/sda: 931,51 GiB, 1000204886016 bytes, 1953525168 sectores
Modelo de disco: ST1000DM003-1CH1
Unidades: sectores de 1 * 512 = 512 bytes
Tamaño de sector (lógico/físico): 512 bytes / 4096 bytes
Tamaño de E/S (mínimo/óptimo): 4096 bytes / 4096 bytes
Tipo de etiqueta de disco: dos
Identificador del disco: 0x48d5e0eb

Disposit.  Inicio   Comienzo      Final   Sectores Tamaño Id Tipo
/dev/sda1  *            2048    1187839    1185792   579M  7 HPFS/NTFS/exFAT
/dev/sda2            1187840  122898431  121710592    58G  7 HPFS/NTFS/exFAT
/dev/sda3          122900478 1873399807 1750499330 834,7G  f W95 Ext'd (LBA)
/dev/sda4         1873399808 1953523711   80123904  38,2G 83 Linux
/dev/sda5          122900480  752125951  629225472   300G  7 HPFS/NTFS/exFAT
/dev/sda6          752128000 1381273599  629145600   300G  7 HPFS/NTFS/exFAT
/dev/sda7         1381275648 1465161727   83886080    40G 83 Linux
/dev/sda8         1465163776 1471455231    6291456     3G 82 Linux swap / Solaris
/dev/sda9         1471457280 1597286399  125829120    60G 83 Linux
/dev/sda10        1597288448 1723117567  125829120    60G 83 Linux
/dev/sda11        1723119616 1775548415   52428800    25G 83 Linux
/dev/sda12        1775550464 1873399807   97849344  46,7G 83 Linux



Mi idea es copiar la partición /dev/sda11 a /dev/sdb13
Como podemos observar la partición de origen tiene 25G y la partición de destino 30G
Debemos tener claro lo que queremos hacer, no hay vuelta atrás, si nos equivocamos en la partición de destino podemos sobrescribir datos.

Utilizamos el comando dd
  • Comando dd
  • if=/dev/sda11  Particion de origen, (input)
  • of=/dev/sdb13  Partición de destino, (output)
  • status=progress  Nos permite ver en directo la evolución de la copia.
  • bs=4M  Utilizamos un buffer de 4M para que la copia sea más rápida.
  • && sync  Al terminar la copia obliga al sistema a vaciar todo el buffer de escritura, escribiendo todos los datos.

root@TRABA:/home/seta# dd if=/dev/sda11 of=/dev/sdb13 status=progress bs=4M && sync

26780631040 bytes (27 GB, 25 GiB) copied, 237 s, 113 MB/s
6400+0 records in
6400+0 records out
26843545600 bytes (27 GB, 25 GiB) copied, 243,467 s, 110 MB/s


Con el comando df podemos ver el tamaño del sistema de archivos.

root@TRABA:/home/seta# df
S.ficheros     bloques de 1K    Usados Disponibles Uso% Montado en
udev                 8090288         0     8090288   0% /dev
tmpfs                1624808      1400     1623408   1% /run
/dev/sdb7           61611820  17478284    40971424  30% /
tmpfs                8124036      1376     8122660   1% /dev/shm
tmpfs                   5120         8        5112   1% /run/lock
tmpfs                1624804        68     1624736   1% /run/user/1000
/dev/sda6          314572796 177241236   137331560  57% /mnt/DATOS2
/dev/sda5          314612732  72034952   242577780  23% /mnt/DATOS1
/dev/sdb13          25626852  17379920     6919828  72% /media/seta/rootMX18.3

Observamos el tamaño del sistema de archivos de /dev/sdb13, es de 25G, aunque la partición es de 30G.
Debemos arreglar esto, y expandir el sistema de archivos al tamaño de la partición.

Lo primero es revisar el sistema de archivos creado con le comando e2fsck
root@TRABA:/home/seta# /sbin/e2fsck -f /dev/sdb13
e2fsck 1.47.0 (5-Feb-2023)
Paso 1: Verificando nodos-i, bloques y tamaños
Paso 2: Verificando la estructura de directorios
Paso 3: Revisando la conectividad de directorios
Paso 4: Revisando las cuentas de referencia
Paso 5: Revisando el resumen de información de grupos
rootMX18.3: 416123/1638400 ficheros (0.4% no contiguos), 4491867/6553600 bloques


Con el comando resize2fs expandimos el sistema de archivos al tamaño de la partición.
root@TRABA:/home/seta# /sbin/resize2fs /dev/sdb13
resize2fs 1.47.0 (5-Feb-2023)
Cambiando el tamaño del sistema de ficheros en /dev/sdb13 a 7727872 (4k) bloques.
El sistema de ficheros en /dev/sdb13 tiene ahora 7727872 bloques (de 4k).


Observamos que el tamaño del sistema de archivos corresponde al tamaño de la partición 30G.
root@TRABA:/home/seta# df
S.ficheros     bloques de 1K    Usados Disponibles Uso% Montado en
udev                 8090288         0     8090288   0% /dev
tmpfs                1624808      1404     1623404   1% /run
/dev/sdb7           61611820  17470108    40979600  30% /
tmpfs                8124036      1376     8122660   1% /dev/shm
tmpfs                   5120         8        5112   1% /run/lock
tmpfs                1624804        68     1624736   1% /run/user/1000
/dev/sda6          314572796 177241236   137331560  57% /mnt/DATOS2
/dev/sda5          314612732  72034952   242577780  23% /mnt/DATOS1
/dev/sdb13          30249924  17379920    11308048  61% /media/seta/rootMX18.3


Para que arranque nuestra distribución Linux en la partición donde hemos copiado los ficheros, deberemos cambiar la configuración del grub que tengamos por defecto.
En mi caso añado en /boot/grub/grub.cfg

menuentry 'MX 18.3  /dev/sdb13' --class mx --class gnu-linux --class gnu --class os $menuentry_id_option 'osprober-gnulinux-simple-61916602-287c-4101-868a-431efef9f6a4' {
    insmod part_msdos
    insmod ext2
    set root='hd1,msdos13'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd1,msdos13 --hint-efi=hd1,msdos13 --hint-baremetal=ahci1,msdos13  61916602-287c-4101-868a-431efef9f6a4
    else
      search --no-floppy --fs-uuid --set=root 61916602-287c-4101-868a-431efef9f6a4
    fi
    linux /boot/vmlinuz-4.19.0-5-686-pae root=/dev/sdb13
    initrd /boot/initrd.img-4.19.0-5-686-pae
}

Conviene revisar el  /etc/fstab por si se cambio el montaje de algunas de las particiones, como puede ser la swap (memoria de intercambio)


Espero que les haya gustado este artículo, y ya no tengan miedo al cambiar de disco duro.


Saludos.
Juan Galaz



Bibliografía:


https://help.clouding.io/hc/es/articles/360010074599-C%C3%B3mo-extender-particiones-manualmente-en-Linux
https://medium.com/@dibaekhanal101/increase-ec2-volume-size-growpart-resize2fs-bd7267b07e94
https://www.iespai.com/2024/04/02/guia-para-utilizar-correctamente-el-comando-dd-como-copia-de-seguridad/



martes, 12 de marzo de 2024

Corte Láser en Linux


 

 Página principal

Corte Láser
en
Linux

Después de algún tiempo de hacer montajes con el cortador láser:
28/11/2018 - Arduino - Inkscape Laser Tool Plug-in, GRBL, Universal GcodeSender, PARTE 5.  CNCE
12/06/2020 - ARDUINO - CNC Láser y dibujado con Ender 3. ENDER 3
10/06/2022 - Crear circuitos impresos (PCB) con KICAD, FlatCAM, Candle, y CNC 3018.   PCB_CNC_II
Vuelvo a utilizar el láser que viene con la CNC 3018 , no es muy potente 2.5W, apenas corta papel, y en varias pasadas cartón de 1 mm.
Para marcar (quemar) madera funciona bien, pero no se le puede pedir mucho con esta potencia.


En Linux, el intentar hacer funcionar un programa de  hace 4 años, en muchos casos se hace imposible.
Lo que te funcionaba en Debian 10, no te funciona en Debian 12. Esto es debido al cambio de librerías.
En muchos casos suele se el cambio desde Python 2 a python 3, los programados con uno no funcionan en el otro, se debe hacer una pequeña modificación de código, y en muchos casos no se hace. Los complementos de FreeCAD y InkScape en bastantes casos dejan de funcionar bien al estar programados en Python.
También ocurre con con el paso de QT4 a QT5, o en WX con sus diferentes versiones.
Se suele solucionar haciendo programas portables que incorporan sus librerías de trabajo, pero entonces el tamaño de un pequeño programa es de 100Mbytes.
Al final la mejor solución es utilizar las versiones de Windows, que en la mayoría de los casos, los programas de hace 15 años funcionan en las versiones nuevas de Windows. Esto es lo que tiene perdido Linux  frente a Windows, y es una de las cosas pendientes que tiene Linux.
Otra solución que empleo muchas veces, es utilizar maquinas virtuales con distribuciones Debian antiguas, funciona muy bien.

Para el corte con láser la mejor opción es buscar gráficos vectorizados de siluetas, búscalos en esta web:
https://openclipart.org/search/?p=2&query=silueta
Para las fuentes se suelen utilizar las que no cortan completamente las fuentes, y de esta forma no se pierde el circulo de por ejemplo la O, búscalos en esta web:
https://www.1001fonts.com/search.html?search=stenciled

El programa que utilizo es InkScape para generar los Gcode mediante sus complementos.
Si no se pueden añadir automáticamente desde el propio programa, deberás copiarlos manualmente en:
/home/usuario/.config/inkscape/extensions

Las fuentes las tienes que copiar a:
/home/usuario/.local/share/fonts

DEBIAN 10
En las primeras pruebas descubrí que muchos complementos que se utilizan para el láser, solo funcionaban en Debian 10, hay hice mi primera prueba.
Para generar el código Gcode utilizo el complemento LaserTools en InkScape 9.2 .
Debemos ajustar las opciones del complemento para que funcione en nuestra máquina láser.
En el video adjunto se muestra como pruebo los cortes de papel con láser.



DEBIAN 12
La siguiente prueba es en Debian 12, también utilizo el programa InkScape 1.2 , pero como explicamos anteriormente, muchos complementos dejan de funcionar bien, y hay que utilizar otros.
El complemento utilizado es J-Tech-Photonics-Laser-Tool y se puede bajar de:
https://github.com/JTechPhotonics/J-Tech-Photonics-Laser-Tool/releases/tag/v2.5.1
Como en el anterior complemento debemos retocar todas las opciones.



Para lanzar el código Gcode a la máquina láser, en ambos casos, tanto en Debian 10 como en Debian 12, utilizo Universal Gcode Sender , y se baja de:
https://winder.github.io/ugs_website/
Aquí debemos buscar la versión que funciona en nuestra distribución.

Lightburn
Este programa es comercial y se puede comprar por 60€, pero si queremos usarlo en modo TRIAL, se puede utilizar durante 30 días
Es un programa muy fácil de utilizar, y tiene versiones tanto para Windows como para Linux, esto es un lujo.
https://lightburnsoftware.com/


LaserGRBL
Este es un programa sencillo y fácil de utilizar, pero solo funciona en Windows.
Yo lo he ejecutado en una máquina virtual bajo Debian, y funciona perfectamente.
Puede grabar imágenes, generar gráficos vectorizados, lanzar código Gcode, pero no tiene ninguna utilidad para editar.
https://lasergrbl.com/


VIDEO

Ante todo debéis utilizar gafas para no quedaros ciegos, es muy peligroso.

Saludos.
Juan Galaz


Bibliografía:

https://openclipart.org/search/?p=2&query=silueta

https://www.1001fonts.com/search.html?search=stenciled
https://github.com/JTechPhotonics/J-Tech-Photonics-Laser-Tool/releases/tag/v2.5.1
https://winder.github.io/ugs_website/
https://lasergrbl.com/
https://lightburnsoftware.com/

28/11/2018 - Arduino - Inkscape Laser Tool Plug-in, GRBL, Universal GcodeSender, PARTE 5.  CNCE
12/06/2020 - ARDUINO - CNC Láser y dibujado con Ender 3. ENDER 3
10/06/2022 - Crear circuitos impresos (PCB) con KICAD, FlatCAM, Candle, y CNC 3018.   PCB_CNC_II
 

domingo, 29 de octubre de 2023

dump1090 en Linux - ADS-B Debian 12 y MX23

  Página principal

LINUX
dump1090  -  ADS-B
Debian 12  y  MX23

Las siglas ADS-B (Automatic dependent surveillance-broadcast) significan Vigilancia dependiente automática.
Después de 10 años he vuelto a probar el dump1090. raspavi.html  y ra_rtl1.html
Dump1090 es un programa que utilizando el receptor de TDT que emplea el chip RTL2832U+R820T (7€ - 20€) recibe las señales que emiten los aviones para indicar su posicionamiento.
Los mensajes ADS-B, son transmitidos por el equipo a bordo de los aviones de manera periódica, y utilizan la banda de 1090 MHz, tanto a otras aeronaves como a las estaciones de control en tierra.
El dump1090-mutability es un fork de dump1090 , es el que viene con las distribuciones.
Al intentar instalarlo en una distribución de Linux, me surgieron bastantes problemas, por lo que decidí hacer un video-tutorial.
Después de muchas pruebas he tenido que borrar la configuración que viene por defecto en nginx, de otra forma no me funciona.

Los dos programas que tenemos que instalar son:
nginx   - servidor web
dump1090-mutability - el programa receptor de señales ADS-B

Serie de comandos para la instalación:

/etc/init.d/dump1090-mutability stop
sudo dpkg-reconfigure dump1090-mutability
/etc/init.d/dump1090-mutability start

ln -s /etc/nginx/sites-available/dump1090-mutability /etc/nginx/sites-enabled/dump1090.conf
rm /etc/nginx/sites-enabled/default
ls /etc/nginx/sites-enabled/
/etc/init.d/nginx restart
nginx -T




En algún caso no funciona debido a que no reconoce la tarjeta receptora usb.

Lo podemos ver con la orden:

more /var/log/dump1090-mutability.log


Wed Nov  1 18:40:23 2023 CET  EB_SOURCE EB_VERSION starting up.
Using sample converter: UC8, integer/table path
No supported RTLSDR devices found.

Editamos el fichero  con la orden:

nano /etc/udev/rules.d/rtl-sdr.rules

Copia lo siguiente:

SUBSYSTEMS=="usb", ATTRS{idVendor}=="0bda", ATTRS{idProduct}=="2838", MODE:="0666"

Para ver que ID del USB tiene tu tarjeta ejecuta la orden lsusb . En mi caso es:
      Bus 002 Device 002: ID 0bda:2838 Realtek Semiconductor Corp. RTL2838 DVB-T
Modifica para tu receptor 0bda and 2838  para que coincida con el tuyo.

Guarda el fichero.


Editamos  con la orden:

sudo nano /etc/modprobe.d/no-rtl.conf

Añade las lineas:

blacklist dvb_usb_rtl28xxu
 blacklist rtl2832
 blacklist rtl2830


Guarda el fichero y reinicia el ordenador.

Después tecleamos:

more /var/log/dump1090-mutability.log

Wed Nov  1 18:40:23 2023 CET  EB_SOURCE EB_VERSION starting up.
Using sample converter: UC8, integer/table path
No supported RTLSDR devices found.
Wed Nov  1 18:48:32 2023 CET  EB_SOURCE EB_VERSION starting up.
Using sample converter: UC8, integer/table path
Found 1 device(s):
0: Realtek, RTL2838UHIDIR, SN: 00000001 (currently selected)
Found Rafael Micro R820T tuner
Max available gain is: 49.60 dB
Setting gain to: 49.60 dB
Gain reported by device: 49.60 dB
Allocating 15 zero-copy buffers

La tarjeta receptora ha sido detectada y ya podemos ver los aviones en el navegador en la dirección:

localhost/dump1090





VIDEO




Saludos.
Juan Galaz


Bibliografía:



https://github.com/adsb-related-code/dump1090-mutability


martes, 3 de octubre de 2023

Linux - Test de velocidad de discos duros.

 


Test de velocidad de discos duros.


Mirando como podía hacer más rápido el trabajo con ficheros, y la compilación de programas, decidí hacer una prueba con diferente tipo de discos, HDD, SSD, RAM.
El resultado es muy revelador, el disco RAM es el mejor método de trabajar con ficheros.
Solo debemos acordarnos de que al reiniciar el ordenador, el disco RAM se borra, y todos los ficheros desaparecen.


Método 1.


apt-get install hdparm
hdparm -tT /dev/sda


Disco HDD
---------
/dev/sda:
 Timing cached reads:   22794 MB in  1.99 seconds = 11431.63 MB/sec
 Timing buffered disk reads: 466 MB in  3.01 seconds = 155.03 MB/sec

Disco SSD
---------
/dev/sdb:
 Timing cached reads:   22918 MB in  1.99 seconds = 11493.75 MB/sec
 Timing buffered disk reads: 1538 MB in  3.00 seconds = 512.05 MB/sec





Método 2.

apt-get install ioping


Disco HDD
--------- WRITE
root@debian11:/mnt/DATOS2# ioping -S64M -L -s4k -W -c 10 .
......
--- . (fuseblk /dev/sda6 300.0 GiB) ioping statistics ---
9 requests completed in 301.1 ms, 36 KiB written, 29 iops, 119.6 KiB/s
generated 10 requests in 9.03 s, 40 KiB, 1 iops, 4.43 KiB/s
min/avg/max/mdev = 27.4 ms / 33.5 ms / 38.7 ms / 5.04 ms

Disco HDD
--------- READ
root@debian11:/mnt/DATOS2# ioping -A -D -s16k -c 10 .
.....
--- . (fuseblk /dev/sda6 300.0 GiB) ioping statistics ---
9 requests completed in 1.47 ms, 144 KiB read, 6.12 k iops, 95.6 MiB/s
generated 10 requests in 9.00 s, 160 KiB, 1 iops, 17.8 KiB/s
min/avg/max/mdev = 158.0 us / 163.4 us / 170.0 us / 3.92 us

Disco SSD
--------- WRITE
root@debian11:/mnt/DATOS2# cd ~
root@debian11:~# ioping -S64M -L -s4k -W -c 10 .
....
--- . (ext4 /dev/sdb7 39.1 GiB) ioping statistics ---
9 requests completed in 6.78 ms, 36 KiB written, 1.33 k iops, 5.18 MiB/s
generated 10 requests in 9.00 s, 40 KiB, 1 iops, 4.44 KiB/s
min/avg/max/mdev = 417.0 us / 753.8 us / 892.0 us / 178.5 us


Disco SSD
--------- READ
root@debian11:~# ioping -A -D -s16k -c 10 .
.....

--- . (ext4 /dev/sdb7 39.1 GiB) ioping statistics ---
9 requests completed in 3.06 ms, 144 KiB read, 2.94 k iops, 46.0 MiB/s
generated 10 requests in 9.00 s, 160 KiB, 1 iops, 17.8 KiB/s
min/avg/max/mdev = 324.2 us / 339.6 us / 351.9 us / 10.4 us



Método 3.

dd if=/dev/zero of=speed_test bs=64k count=16k conv=fdatasync

Escribir 1Gb fichero grande.

Disco SSD
--------- WRITE
root@debian11:/home/seta# dd if=/dev/zero of=speed_test bs=64k count=16k conv=fdatasync
16384+0 registros leídos
16384+0 registros escritos
1073741824 bytes (1,1 GB, 1,0 GiB) copied, 3,79558 s, 283 MB/s

Disco HDD
--------- WRITE
root@debian11:/mnt/DATOS1# dd if=/dev/zero of=speed_test bs=64k count=16k conv=fdatasync
16384+0 registros leídos
16384+0 registros escritos
1073741824 bytes (1,1 GB, 1,0 GiB) copied, 13,2229 s, 81,2 MB/s

Disco RAM
--------- WRITE
root@debian11:/mnt/ramdisk# dd if=/dev/zero of=speed_test bs=64k count=16k conv=fdatasync
16384+0 registros leídos
16384+0 registros escritos
1073741824 bytes (1,1 GB, 1,0 GiB) copied, 0,274335 s, 3,9 GB/s




Escribir 839MG en ficheros pequeños de 1K

Disco SSD ficheros pequeños
--------- WRITE
root@debian11:~# dd if=/dev/zero of=speed_test bs=1k count=800k conv=fdatasync
819200+0 registros leídos
819200+0 registros escritos
838860800 bytes (839 MB, 800 MiB) copied, 3,66511 s, 229 MB/s

Disco HDD ficheros pequeños
--------- WRITE
root@debian11:/mnt/DATOS1# dd if=/dev/zero of=speed_test bs=1k count=800k conv=fdatasync
819200+0 registros leídos
819200+0 registros escritos
838860800 bytes (839 MB, 800 MiB) copied, 30,8502 s, 27,2 MB/s


Disco RAM ficheros pequeños
--------- WRITE -pru3
root@debian11:/mnt/ramdisk# dd if=/dev/zero of=speed_test bs=1k count=800k conv=fdatasync
819200+0 registros leídos
819200+0 registros escritos
838860800 bytes (839 MB, 800 MiB) copied, 1,02066 s, 822 MB/s




Saludos.
Juan Galaz


Bibliografía:

https://www.analyticslane.com/2023/01/25/medir-la-velocidad-de-escritura-del-disco-en-linux/
https://blog.webuphosting.com/medir-la-velocidad-del-disco-duro-en-linux/


sábado, 17 de septiembre de 2022

X96mini Instalar Linux + Servidor WEB

  Página principal

X96mini
Instalar Linux + Servidor WEB



Anteriormente:

01/11/2021 -  Instalar en la raspberry Pi servidores. RaspServer
11/04/2019 - Servidor WEB con Orange PI (raspberry pi) y NGINX - SERVIDOR_Orangepi
28/03/2019 - Servidor DELL R200. SERVIDOR

Ahora instalo el servidor en un TV-BOX modelo X96mini, con la distribución ARMBIAN.
Los primeros pasos son los particulares de X96mini.
La instalación de los servidores WEB, FTP, VNC, SSH estan explicados mejor en los anteriores artículos.

Descargar Armbian de:
        https://users.armbian.com/balbes150/arm-64/
    La imagen utilizada es:
        Armbian_20.10_Arm-64_bullseye_current_5.9.0_desktop.img.xz  
    Ejecutar balena grabador o grabador de imagenes de disco en Linux.
       
       
        En mi caso el programa balena era mucho más rápido en Windows.
    Grabar imagen de Armbian en tarjeta microSD
    Retire la microSD de forma segura y vuelva a insertarla

Configurar la tarjeta MicroSD para Armbian

    Abra la partición legible de la tarjeta microSD en Explorer
    Cambie el nombre del archivo apropiado de abajo a u-boot.ext en la raíz de la tarjeta SD

    u-boot-s905 (para s905)
    u-boot-s905x-s912 (para s905x y s912)
    u-boot-s905x2-s922 (para s905x2 y s922)

    En mi caso hago una copia de u-boot-s905x-s912 (para s905x y s912) y lo renombro a u-boot.ext.
   
    Edite /extlinux/extlinux.conf en un editor de texto
        Comente las líneas rk-3399 agregando #
        Descomente las líneas aml s9xx FDT y APPEND eliminando #
        Actualice la línea FDT para que apunte a un archivo .dtb que funcione para su dispositivo
    Para el X96mini:
        # aml s9xxx
        #FDT /dtb/amlogic/meson-g12a-x96-max-no-cvbs.dtb
        #FDT /dtb/amlogic/meson-g12b-ugoos-am6-no-cvbs.dtb
        #FDT /dtb/amlogic/meson-g12b-odroid-n2.dtb
        FDT /dtb/amlogic/meson-gxl-s905w-p281.dtb
        APPEND=root=LABEL=ROOTFS rootflags=data=writeback rw console=ttyAML0,115200n8 console=tty0 no_console_suspend consoleblank=0 fsck.fix=yes fsck.repair=yes net.ifnames=0

    Salvar y expulsar de forma segura
 
Inserte la tarjeta microSD en la caja de Android TV
   
Arrancando a Armbian por primera vez:
     Con un palillo o similar, se introduce en la conexión AV y se pulsa un botón interior.
     A la vez se conecta el adaptador de corriente a la caja de Android TV.
       
     Esto solo hay que hacerlo la primera vez que arranca Armbian.


Configurando los servidores.
apt-get update
apt-get install console-data console-setup  keyboard-configuration
/sbin/dpkg-reconfigure  keyboard-configuration
/sbin/dpkg-reconfigure  locales

apt-get install mc xfe x11vnc vsftpd nginx ssh dillo

-----------------SERVIDOR WEB----------------------------
mkdir  /var/www
chown -R seta:seta   /var/www/html
chmod  ugo+rx    /var/www/html
geany /etc/vsftpd.conf

----------------IP FIJA----------------------------------

geany /etc/network/interfaces

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
  address 192.168.1.50
  netmask 255.255.255.0
  gateway 192.168.1.1
dns-nameservers 8.8.8.8
post-up echo "Interface eth0 levantada con exito"
post-down echo "Interface eth0 bajada con exito"

-----------------SERVIDOR FTP-----------------------------

Editar:
    geany /etc/vsftpd.conf
Cambiar a:
    anonymous_enable=NO
    local_enable=YES
    write_enable=YES


----------SERVIDOR VNC---------------------
--ESTO SE HACE COMO USUARIO NORMAL--

CONTRASEÑA
     x11vnc -storepasswd

En Xfce añadir un arraque automático:
   

Exec=x11vnc -forever -usepw -display :0 -ultrafilexfer


VÍDEO



Revisión 1

Características:
TV Box Status Information Template Version 1.0
TV Box Name (example: TX3 mini): X96 mini
CPU (example: amlogic s905w): amlogic s905w
Armbian build file name: Armbian_20.10_Arm-64_focal_current_5.9.0_desktop.img.xz
DTB file used: meson-gxl-s905w-gxl-s905w-p281.dtb
Kernel Version: 5.9.0
Distribution Installed (focal, buster, etc): focal
Working Ethernet (Yes/No): Yes
Max Ethernet Speed that works (100/1000): 100
Does wifi work (Yes/No): No
Does bluetooth work (Yes/No): No
Does HDMI audio work (Yes/No): No
Additional Comments (provide any additional information you feel is important): HDMI was unstable during boot and when connected to a 4K monitor.  Once I connected to a 1080p monitor the display was stable after booting, still had issues during the boot. Como vemos no funciona el audio por HDMI. Lo soluciono con un convertidor de USB a audio, son baratos 2€
La tarjeta wifi interna no funciona. Puedes colocar una mediante USB , antes tienes que añadir el firmware, la mayoría funciona.

Tarjeta Bluetooth y Wifi tipo USB funcionando.


Para cambiar la resolución cuando arranca ARMBIAN hay que hacer algunos cambios en /extlinux/extlinux.conf.
1024x768
LABEL Armbian
LINUX /zImage
INITRD /uInitrd

# aml s9xxx
#FDT /dtb/amlogic/meson-gxbb-p200.dtb
#FDT /dtb/amlogic/meson-gxl-s905x-p212.dtb
#FDT /dtb/amlogic/meson-gxm-q200.dtb
#FDT /dtb/amlogic/meson-g12a-x96-max.dtb
#FDT /dtb/amlogic/meson-g12b-odroid-n2.dtb
FDT /dtb/amlogic/meson-gxl-s905w-p281.dtb
APPEND root=LABEL=ROOTFS rootflags=data=writeback rw console=ttyAML0,115200n8 console=tty0 no_console_suspend consoleblank=0 fsck.fix=yes fsck.repair=yes net.ifnames=0 drm_kms_helper.edid_firmware=HDMI-A-1:edid/1024x768.bin video=HDMI-A-1:1024x768@60

1280x720 (HD)
LABEL Armbian
LINUX /zImage
INITRD /uInitrd

# aml s9xxx
#FDT /dtb/amlogic/meson-gxbb-p200.dtb
#FDT /dtb/amlogic/meson-gxl-s905x-p212.dtb
#FDT /dtb/amlogic/meson-gxm-q200.dtb
#FDT /dtb/amlogic/meson-g12a-x96-max.dtb
#FDT /dtb/amlogic/meson-g12b-odroid-n2.dtb
FDT /dtb/amlogic/meson-gxl-s905w-p281.dtb
APPEND root=LABEL=ROOTFS rootflags=data=writeback rw console=ttyAML0,115200n8 console=tty0 no_console_suspend consoleblank=0 fsck.fix=yes fsck.repair=yes net.ifnames=0 drm_kms_helper.edid_firmware=HDMI-A-1:edid/1280x720.bin video=HDMI-A-1:1280x720@60

Si entramos en modo remoto , y no hemos conectado ningún monitor HDMI, veremos que la resolución es del tipo PAL.
Esta resolución es baja 720x576, en algún caso es difícil manejar el entorno gráfico.
Si estamos empeñados en utilizar el modo remoto en modo gráfico, deberemos comprar una especie de adaptador HDMI que engaña y hace ver que tenemos al PC-BOX un monitor HDMI enchufado.
En algún artículo he visto que existe la forma de mediante configuraciones hacer creer que está enchufado un HDMI, yo no lo he conseguido.


El consumo del X96mini es de entre 1.7W y 2.7W dependiendo de los aparatos que tengamos conectados al USB.
También varía el consumo dependiendo de la velocidad que pongamos en los procesadores, además también variara el calor desprendido.



Con el emulador DOSBOX ejecutando el antiguo Windows 3.1


Ejecutando un decodificador de SDR (radio definida por software) ávido de recursos.


VIDEO2 en resolución de 1024x768

sábado, 27 de agosto de 2022

Raspberry pi pico programación C Semáforo

  Página principal

Raspberry pi pico
programación C
Semáforo



Anteriormente se realizó estos dos montaje programando en python y IDE arduino, ahora lo realizo en C.
En estos dos primeros montajes realizaré un parpadeo de un LED y en el segundo un semáforo.
Para programar en C debemos instalar una SDK.

https://datasheets.raspberrypi.com/pico/getting-started-with-pico.pdf

He realizado un pequeño tutorial en vídeo de como instalar el SDK sobre Linux - Debian11.



Estos son los pasos para instalar y compilar con la SDK

Fuente capítulo 2 de "Getting started with Raspberry Pi Pico"


ROOT
====
sudo apt update
sudo apt install cmake gcc-arm-none-eabi libnewlib-arm-none-eabi build-essential


USUARIO
=======
cd ~/
mkdir pico
cd pico

git clone -b master https://github.com/raspberrypi/pico-sdk.git
cd pico-sdk
git submodule update --init
cd ..
git clone -b master https://github.com/raspberrypi/pico-examples.git

----Update----
cd pico-sdk
git pull
git submodule update


----Compilar ejemplos ---

cd pico-examples
mkdir build
cd build
export PICO_SDK_PATH=../../pico-sdk
cmake ..


cd blink
make -j4

---Encende la Raspberry pi pico mientras está pulsado botón BOOT--
cp blink.uf2 /media/USUARIO/RPI-RP2/


Para que no tenga que desconectar y conectar el usb cada vez que cargo un programa la raspberry pi pico, he colocado un pulsador en el pin 3v3_ENABLE.
Ahora cada vez que tengo que probar un programa, solo tengo que pulsar a la vez los botones BOOT y 3v3_ENABLE, y soltar 3v3_ENABLE y BOOT, por este orden.
Inmediatamente se pondrá en el modo de carga de programa.



En la propia placa de Raspberry se incluye un LED en el pin GP25, aunque externamente no se puede acceder al pin GP25.
He utilizado el programa de Blink que viene en ejemplos.


/*
 * Copyright (c) 2020 Raspberry Pi (Trading) Ltd.
 *
 * SPDX-License-Identifier: BSD-3-Clause
 */

#include "pico/stdlib.h"

int main() {
#ifndef PICO_DEFAULT_LED_PIN
#warning blink example requires a board with a regular LED
#else
    const uint LED_PIN = PICO_DEFAULT_LED_PIN;
    gpio_init(LED_PIN);
    gpio_set_dir(LED_PIN, GPIO_OUT);
    while (true) {
        gpio_put(LED_PIN, 1);
        sleep_ms(100);
        gpio_put(LED_PIN, 0);
        sleep_ms(400);
    }
#endif
}
blink.c

add_executable(blink
        blink.c
        )

# pull in common dependencies
target_link_libraries(blink pico_stdlib)

# create map/bin/hex file etc.
pico_add_extra_outputs(blink)

# add url via pico_set_program_url
example_auto_set_url(blink)
CMakeLists.txt




En el segundo montaje realizo un simple semáforo.
Se utilizan 5 pin de la Raspberry, 3 son para las luces de los coches, y 2 para las luces de los peatones.

Entorno para compilar Semaforo
#!/bin/sh
export PICO_SDK_PATH=~/pico/pico-sdk
echo ======ENTORNO============
echo ENTORNO
echo $PICO_SDK_PATH
echo ======COMPILAR===========
echo 'mkdir build && cd build'
echo cmake ..
echo make 
echo 'make -j$(nproc)'
echo 'cp programaPI.uf2 /media/usuario/RPI-RP2/'
echo




#include <stdio.h>
#include <pico/stdlib.h>


/*
# SEMÁFORO PARA RASPBERRY PI PICO en C
# SETA43
# seta43.duckdns.org
# seta43.blogspot.com
# Palencia / España
# 25-08-2022
*/

#define sROJO 18
#define sAMARILLO 19
#define sVERDE 20

#define pVERDE 17
#define pROJO 16

int tPARPADEO=400;
int tSEMAFORO=10000;
int tAMARILLO=3000;
long tPEATON=6000;

int main()
{
    stdio_init_all();
    const uint LED_PIN = PICO_DEFAULT_LED_PIN;
   
    gpio_init(LED_PIN);
    gpio_set_dir(LED_PIN, GPIO_OUT);
   
    gpio_init(sROJO);
    gpio_set_dir(sROJO, GPIO_OUT);
    gpio_init(sAMARILLO);
    gpio_set_dir(sAMARILLO, GPIO_OUT);
    gpio_init(sVERDE);
    gpio_set_dir(sVERDE, GPIO_OUT);
   
    gpio_init(pROJO);
    gpio_set_dir(pROJO, GPIO_OUT);
    gpio_init(pVERDE);
    gpio_set_dir(pVERDE, GPIO_OUT);
 
   
    printf("Hello world %d\n",LED_PIN);

    while (true)
    {
      gpio_put(sAMARILLO, 0);
      gpio_put(sROJO, 1);
      gpio_put(pROJO, 0);
      gpio_put(pVERDE, 1);
      sleep_ms(tPEATON);
     
      for(int z=0;z<=7;++z)
          {
            gpio_put(pVERDE, 0);
            sleep_ms(tPARPADEO);
            gpio_put(pVERDE, 1);
            sleep_ms(tPARPADEO);
          }
      gpio_put(pROJO, 1);
      sleep_ms(1000);

      gpio_put(sVERDE, 1);
      gpio_put(sROJO, 0);
      sleep_ms(tSEMAFORO);
      gpio_put(sAMARILLO, 1);
      gpio_put(sVERDE, 0);
      sleep_ms(tAMARILLO);
     
    }
}

main.c

cmake_minimum_required(VERSION 3.13)

include($ENV{PICO_SDK_PATH}/external/pico_sdk_import.cmake)

project(programaPI C CXX ASM)

set(CMAKE_C_STANDARD 11)
set(CMAKE_CXX_STANDARD 17)

pico_sdk_init()

add_executable(${PROJECT_NAME} main.c)

pico_add_extra_outputs(${PROJECT_NAME})

target_link_libraries(${PROJECT_NAME} pico_stdlib)

pico_enable_stdio_usb(${PROJECT_NAME} 1)
pico_enable_stdio_uart(${PROJECT_NAME} 0)

CMakeLists.txt

He realizado el mismo programa pero creando funciones tipo arduino.

/*
# SEMÁFORO PARA RASPBERRY PI PICO en C
# SETA43
# seta43.duckdns.org
# seta43.blogspot.com
# Palencia / España
# 25-08-2022
*/

#include <stdio.h>
#include <pico/stdlib.h>

#define sROJO 18
#define sAMARILLO 19
#define sVERDE 20

#define pVERDE 17
#define pROJO 16

int tPARPADEO=400;
int tSEMAFORO=10000;
int tAMARILLO=3000;
long tPEATON=6000;


#define OUTPUT 1
#define INPUT 0
#define HIGH 1
#define LOW 0

void pinMode(unsigned int port, char modo)
{
    gpio_init(port);
    if(modo==OUTPUT)
        gpio_set_dir(port, GPIO_OUT);
     else
        gpio_set_dir(port, GPIO_IN);
}

void digitalWrite(unsigned int port, char val)
{
    gpio_put(port, val);
}

void delay(long t)
{
    sleep_ms(t);
}



int main()
{
      stdio_init_all();
      pinMode(sROJO, OUTPUT);
      pinMode(sAMARILLO, OUTPUT);
      pinMode(sVERDE, OUTPUT);

      pinMode(pVERDE, OUTPUT);
      pinMode(pROJO, OUTPUT);

      //#INICIALIZAR
      digitalWrite(sAMARILLO, HIGH);
      digitalWrite(sROJO, HIGH);
      digitalWrite(sVERDE, LOW);
      digitalWrite(pROJO, HIGH);
      digitalWrite(pVERDE, LOW);
      delay(1000);
   
    while(1)
    {
      digitalWrite(sAMARILLO, LOW);
      digitalWrite(sROJO, HIGH);
      digitalWrite(pROJO, LOW);
      digitalWrite(pVERDE, HIGH);
      delay(tPEATON);

      //Parpadeo verde peatón
      for(int z=0;z<=7;++z)
      {
        digitalWrite(pVERDE, LOW);
        delay(tPARPADEO);
        digitalWrite(pVERDE, HIGH);
        delay(tPARPADEO);
      }
      digitalWrite(pROJO, HIGH);
      delay(1000);

      digitalWrite(sVERDE, HIGH);
      digitalWrite(sROJO, LOW);
      delay(tSEMAFORO);
      digitalWrite(sAMARILLO, HIGH);
      digitalWrite(sVERDE, LOW);
      delay(tAMARILLO);
    }
   
}

main.c


Espero que este montaje os haya parecido interesante.

Saludos.

Juan Galaz



Bibliografía:

https://datasheets.raspberrypi.com/pico/raspberry-pi-pico-c-sdk.pdf
https://datasheets.raspberrypi.com/pico/getting-started-with-pico.pdf
seta_PIB
seta_PIA
https://lindevs.com/set-up-raspberry-pi-pico-sdk-on-ubuntu
https://www.electroniclinic.com/raspberry-pi-pico-rp2040-programming-in-micropython-with-examples/
https://www.youtube.com/watch?v=2gihPgEkvL8
https://picockpit.com/raspberry-pi/es/todo-sobre-la-frambuesa-pi-pico/


viernes, 7 de mayo de 2021

Usar tu móvil como Webcam en OBS Linux.

Usar tu móvil como Webcam
en
OBS Linux.


Tengo una colección de cámaras web , y como he podido observar la calidad es muy dispar, si queremos tener una cámara web  buena se necesita gastarse dinero.
Como es normal la mayoría de gente tiene un móvil, y aunque el móvil no sea bueno, la cámara que lleva seguro que es mejor que la webcam que tiene.
Buscando por internet el usar el móvil como webcam bajo Linux encontré esta página:
https://github.com/bluezio/ipwebcam-gst
Explica como mediante dos scripts y la aplicación de móvil IP-WEBCAM podemos usar nuestro móvil como webcam.
Existen dos posibilidades, mediante wifi, o mediante cable usb con ADB. En este caso solo explico como hacerlo mediante wifi.

El primer script   ./install-videochat.sh se usa para instalar un viejo conocido v4l2loopback-dkms que permite crear webcam virtuales.

En un tutorial antiguo de como hacer funcionar OBS en Linux explico como instalar v4l2loopback-dkms.
Para instalar programas debemos ser root.
Desde una consola tecleamos
            su  ->            contraseña
            sudo apt  install v4l2loopback-dkms v4l2loopback-utils
Para probar que funciona listamos los devices de video antes y después de cargar el módulo.
            ls /dev/video*
            sudo modprobe v4l2loopback devices=1 video_nr=5 card_label=VirtualCam exclusive_caps=1
            ls /dev/video*
Veremos que se creó un /dev/video5 virtual.
Para no tener que crearlo cada vez que queramos ejecutar el osb-studio , hacemos que lo cargue automáticamente al iniciar el sistema.
            echo "options v4l2loopback devices=1 video_nr=5 card_label=VirtualCam exclusive_caps=1" | sudo tee /etc/modprobe.d/v4l2loopback.conf
            echo "v4l2loopback" | sudo tee /etc/modules-load.d/v4l2loopback.conf

Como yo tenía ya instalado v4l2loopback-dkms no he utilizado es script ./install-videochat.sh , pero si no lo tienes instalado deberás hacerlo, es tu decisión está emplear el método del script, o utilizar el método manual que emplee yo hace unos meses.

El segundo script usado es ./run-videochat.sh que tiene bastante opciones y se pueden ver con la orden:
 ./run-videochat.sh --help


Usage:
 ./run-videochat.sh [options]

Script for using IP Webcam as a microphone/webcam.

Options:
 -a, --audio            capture only audio
 -b, --adb-path <path>  set adb location if not in PATH
 -C, --no-echo-cancel   do not set up echo cancellation
 -d, --device <device>  force video device to use
 -f, --flip <flip>      flip image
 -h, --height <height>  set image height (default 480)
 -l, --adb-flags <id>   adb flags to specify device id
 -i, --use-wifi <ip>    use wi-fi mode with specified ip
 -p, --port <port>      port on which IP Webcam is listening (default 8080)
 -s, --no-sync          No force syncing to timestamps
 -v, --video            capture only video
 -w, --width <width>    set image width (default 640)
 -x, --no-proxy         disable proxy while acessing IP
     --help             show this help



Lo primero que debemos hacer es ejecutar la aplicación IP WEBCAM en el móvil:
Tiene bastantes opciones, la que debemos ajustar es la resolución de vídeo para que no sea ni muy alta ni muy baja.
Ahora solo nos queda lanzar el servidor en la aplicación.
Podremos observar la imagen junto con una dirección IP que es la que utilizaremos en Linux.



El segundo script es ./run-videochat.sh , es el que crea la webcam virtual.

  ./run-videochat.sh -i 192.168.1.104


Aceptamos y ya tenemos creada la webcam en el directorio /dev/video*
Podemos ver nuestra webcam creada en la mayoría de programas que visualizan webcams como Guvcview o VLC.
También se puede visualizar y controlar en cualquier navegador.




Abrimos el programa OBS y añadimos una fuente de video.



Podemos añadir un audio de escritorio,  seleccionar el sonido del móvil (IP-WEBCAM) , o de cualquier otra fuente como puede ser micrófono o webcam.



Como podemos observar la calidad es infinítamente superior en cualquier móvil respecto a una webcam.
He de decir que hay webcam de mucha calidad, pero son las menos y son muy caras.

El programa OBS ofrece muchas posibilidades como la transmisión en vivo en YouTube o su grabación para su posterior emisión o edición.
Un gran programa, además de multiplataforma.

En todo esto solo hay una pega, este método en OBS no permite usar nuestro vídeo para usarlo directamente con SKYPE o ZOOM.

PROGRAMA ipwebcam-gst

Un saludo.
Juan Galaz


Bibliografía:

https://github.com/bluezio/ipwebcam-gst
https://jrpk.wordpress.com/2020/11/05/smartphone-como-gnu-linux-webcam/