Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Next »

This document demonstrates how to create an ADB gadget on SP7350 platforms.

Table of Contents

Compiling code for Buildroot root file-system

Please refer to https://sunplus.atlassian.net/wiki/x/1gB-dg to download the source code. Use the following command to set up the compilation environment. In “Select rootfs“, “5“ should be selected for Buildroot root file-system.

# make config

image-20240806-022759.png

adbd utility for the targe

Use the following command to enter Buildroot Configuration and select submenus for the adbd utility for the target : Target Packages > System tools. Select [*] for “android-tools” (it selects “adbd” by default).

# make bconfig

image-20240806-032119.png

kernel Steup

Enter the kernel configuration by running the following command in the top directory of project.

# make kconfig

  1. Select submenus for USB 2.0 controller : Device Drivers > USB support > USB Gadget Support > USB Peripheral Controller. Select <*> for “Sunplus USB 2.0 Device Controller“.

image-20240806-062524.png

  1. Select submenus for USB OTG Transceive driver : Device Drivers > USB support > USB Physical Layer drivers. Select <*> for “Sunplus USB OTG Transceive driver“.

image-20240806-062556.png

  1. Select submenus for USB 3.0 controller : Device Drivers > USB support. Select <*> for “DesignWare USB3 DRD Core Support“ and select “Dual Role mode“ for “Deware USB3 DRD Core Support“.

image-20240806-062639.png

  1. Select submenus for USB Gadget configfs : Device Drivers > USB support > USB Gadget Support. Select <M> for “USB Gadget functions configurable through configfs“ and [*] for “Function filesystem (FunctionFS)“.

image-20240806-062906.png

  1. Execute the make command to build the Linux image.

# make

ConfigFS

Configure the adb gadget through configfs saved as a file named setup_adb.

#!/bin/bash

# enable USB2 or USB3
ADB_EN=USB2

KERNEL_PATH=/lib/modules/`uname -r`/kernel
GADGET_PATH=$KERNEL_PATH/drivers/usb/gadget
FUNCTION_PATH=$GADGET_PATH/function

COMPOSITE=$GADGET_PATH/libcomposite.ko
U_FFS=$FUNCTION_PATH/usb_f_fs.ko

insmod $COMPOSITE
insmod $U_FFS

# disable debug message
echo 0 > /sys/module/sunplus_udc/parameters/dmsg

if [ ! -d /dev/pts ]
then
        mkdir /dev/pts
        mount -t devpts none /dev/pts
fi

if [ ! -d /sys/kernel/config ]
then
        mkdir -p /sys/kernel/config
        mount -t configfs none /sys/kernel/config
fi

cd /sys/kernel/config/usb_gadget
mkdir g_adb
cd g_adb

echo "0x1d6b" > idVendor
echo "0x0105" > idProduct

mkdir configs/c.1
mkdir functions/ffs.adb
mkdir strings/0x409
mkdir configs/c.1/strings/0x409

echo "20240807" > strings/0x409/serialnumber
echo "Sunplus" > strings/0x409/manufacturer
echo "FunctionFS gadget (adb)" > strings/0x409/product
echo "adb" > configs/c.1/strings/0x409/configuration
echo 120 > configs/c.1/MaxPower

mkdir -p functions/ffs.adb
ln -s functions/ffs.adb configs/c.1

mkdir -p /dev/usb-ffs/adb
mount -o uid=2000,gid=2000 -t functionfs adb /dev/usb-ffs/adb
adbd&

sleep 1

if [ $ADB_EN = USB2 ]
then
        echo "f8102800.usb" > UDC
else if [ $ADB_EN = USB3 ]
then
        echo "f80a1000.dwc3" > UDC
fi

Implementation

After updating the image to the SP7350 platform, booting the system, use sh setup_adb command to configure USB 2.0 or USB 3.0 as an adb device.

image-20240806-093005.png

After connecting the adb gadget to a Windows PC through an USB cable, “FunctionFS gadget (adb)”will show up in “Universal Serial Bus devices” of “Device Manager”.

image-20240807-031142.png

Download the “Minimal ADB and Fastboot” application and install it on your Windows computer. After the installation, open the Windows Command Prompt. After issuing the command of “adb devices”, you will see a device (ADB gadget).

image-20240807-031600.png

Re-connection

If the ADB gadget re-connects to the Windows pc after disconnection, the following command should be issued after the re-connection.

echo "f8102800.usb" > /sys/kernel/config/usb_gadget/g_adb/UDC

  • No labels