En algunos casos necesitamos obtener conexión a internet a través de un ordenador debido a que solamente tienen una conexión cableada o por algún otro motivo
En este tutorial mostraré cómo configurar un gadget usb compuesto con funciones de red y consola serie. Lo he probado con Raspberry Pi Zero W y Pinephone. En caso de utilizar una Raspberry Pi necesitamos abrir el archivo /boot/config.txt y agregar lo siguiente
dtoverlay=dwc2
Descargamos el script necesario para el gadget
wget https://git.asgardius.company/asgardius/bash-scripts/raw/branch/main/usbgadget.sh
ejeutamos el script como root
sudo bash usbgadget.sh
Comprobamos que la interfaz de red usb esté presente
ip address | grep usb0
Si devuelve los detalles de la interfaz, ya está funcionando. Ahora la configuramos
sudo nmcli con add type ethernet con-name usbgadget ifname usb0
Una vez que configuremos la conexión compartida en la pc iniciaremos la conexion del otro lado
sudo nmcli con up usbgadget
Iniciamos la consola serie de la siguiente manera
sudo systemctl start getty@ttyGS0.service
Nos conectamos desde la pc de la siguiente manera
screen /dev/ttyACM0 115200
Para utilizar el gadget de almacenamiento descargaremos el script necesario
wget https://git.asgardius.company/asgardius/bash-scripts/raw/branch/main/umsgadget.sh
Si estamos utilizando Raspberry Pi, necesitamos habilitar el módulo libcomposite
sudo modprobe libcomposite
Habilitamos el gadget de almacenamiento de la siguiente manera
sudo bash umsgadget.sh /ruta/a/imagen/hdd.img
Para utlizar una ruta relativa se hará de la siguiente manera
sudo bash umsgadget.sh $PWD/hdd.img
Para desactivar el gadget se introduce el mismo comando, pero sin especificar archivo de imagen. Es posible utilizar ambos de forma simultanea en Pinephone, pero no en Raspberry Pi
Referencias
https://forums.raspberrypi.com/viewtopic.php?t=241161
https://forums.raspberrypi.com/viewtopic.php?t=260107
https://www.tal.org/tutorials/setup-raspberry-pi-headless-use-usb-serial-console
https://developer.puri.sm/Librem5/Development_Environment/Phone/Connecting_via_USB.html