The default VIMs fenix build include
/usr/local/bin/adbd : ADB daemon
/usr/local/bin/adb-setup : The script to enable ADB over USB but is empty.
/lib/systemd/system/adb-khadas.service: systemd service to enable ADB on boot but since the adb-setup is empty ADB won’t start.
Also any changes to above will get over written whenever package “linux-board-package--” gets upgraded.
Until the following is adopted in the default fenix build, here are the steps to enable ADB on your VIMs board.
Step 1 : Upgrade packages. this will pull in the otg-device overlay
$ sudo apt update && sudo apt dist-upgrade -y
Step 2 : Enable OTG device mode
$ sudo nano /boot/env.txt
append otg-device if it is not already to overlays=, example
overlays=uart3 pwm_f i2c3 otg-device
CTRL+s and CTRL+x to save and exit
Step 3 : Reboot
$ sync && sudo reboot
Step 4 : Add adb gadget setup script. Modified from the Edge adb-setup script
$ sudo nano /usr/local/bin/adb-gadget
Copy and paste the following “/usr/local/bin/adb-gadget”. CTRL+s and CTRL+x to save and exit.
#!/bin/sh
# Start adb daemon service…. /etc/fenix-release
# Last 12 digits of cpu serial
CPUSERIAL=“$(grep Serial /proc/cpuinfo | grep -o -P ‘.{0,12}$’)”export service_adb_tcp_port=5555
echo “Configuring ADB USB gadget driver…”
UDC=“$(ls /sys/class/udc/| awk ‘{print $1}’)”
mkdir /dev/usb-ffs -m 0770
mkdir /dev/usb-ffs/adb -m 0770
mkdir /sys/kernel/config/usb_gadget/g1 -m 0770
echo 0x18d1 > /sys/kernel/config/usb_gadget/g1/idVendor
echo 0x4e12 > /sys/kernel/config/usb_gadget/g1/idProduct
mkdir /sys/kernel/config/usb_gadget/g1/strings/0x409 -m 0770
echo $CPUSERIAL > /sys/kernel/config/usb_gadget/g1/strings/0x409/serialnumber
echo “Khadas” > /sys/kernel/config/usb_gadget/g1/strings/0x409/manufacturer
echo $BOARD > /sys/kernel/config/usb_gadget/g1/strings/0x409/productmkdir /sys/kernel/config/usb_gadget/g1/functions/ffs.adb
mkdir /sys/kernel/config/usb_gadget/g1/configs/b.1 -m 0770
mkdir /sys/kernel/config/usb_gadget/g1/configs/b.1/strings/0x409 -m 0770
echo 500 > /sys/kernel/config/usb_gadget/g1/configs/b.1/MaxPowerln -s /sys/kernel/config/usb_gadget/g1/functions/ffs.adb /sys/kernel/config/usb_gadget/g1/configs/b.1/f1
echo “adb” > /sys/kernel/config/usb_gadget/g1/configs/b.1/strings/0x409/configuration
mount -t functionfs adb /dev/usb-ffs/adbadbd &
sleep 1echo $UDC > /sys/kernel/config/usb_gadget/g1/UDC
exit 0
Step 5 : Make ‘adb-gadget’ executable
$ sudo chmod +x /usr/local/bin/adb-gadget
Step 6 : Add systemd service file
$ sudo systemctl edit --force adb-gadget.service --full
Copy and paste the following into the editor. CTRL+s and CTRL+x to save and exit.
[Unit]
Description=ADB over USB
DefaultDependencies=no
After=systemd-update-utmp-runlevel.service[Service]
Type=oneshot
ExecStart=/usr/local/bin/adb-gadget
RemainAfterExit=true[Install]
WantedBy=sysinit.target
Step 7 : Test ‘ADB over USB’
$ sudo systemctl start adb-gadget.service
On your PC, check if the VIMs is listed with “adb devices” command.
If all good proceed to next step else stop and report your observation in this thread.
Step 8 : Enable ‘ADB over USB’ on boot
$ sudo systemctl enable adb-gadget.service