ADBガジェット設定を作成する方法は?

ADBガジェット設定を作成する方法は?

私が読んでいるガジェット設定ドキュメント。また、動作しているAndroidデバイスを使用して/config/usb_gadget/g1.initramfsを起動し、Linuxバージョンを実行せずにデバイスをadbデバイスとして起動しようとしています。デバイスのboot.imgからカーネルを抽出し、次のinitスクリプトを使用してramdisk.cpio.gzを変更しました。

#!/usr/bin/bash
PATH=/usr/bin:/usr/sbin
mount -a #mount dev sys proc and configfs
create_devices #make all necessary nodes
mkdir -p /config/usb_gadget/g1/strings/0x409
mkdir -p /config/usb_gadget/g1/functions/ffs.adb
mkdir -p /config/usb_gadget/g1/functions/configs/b.1/strings/0x409
ln -s /config/usb_gadget/g1/functions/ffs.adb /config/usb_gadget/g1/configs/b.1/f1
echo "0x0e8d" > /config/usb_gadget/g1/idVendor
echo "0x201c" > /config/usb_gadget/g1/idProduct
echo "0123456789101112" > /config/usb_gadget/g1/strings/0x409/serialnumber
echo "TECNO" > /config/usb_gadget/g1/strings/0x409/manufacturer
echo "TECNO KI7" > /config/usb_gadget/g1/strings/0x409/product
echo adb > /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration
echo "0x80" > /config/usb_gadget/g1/configs/b.1/bmAttributes
echo musb-hdrc > /config/usb_gadget/g1/UDC
echo "0x00" > /config/usb_gadget/g1/bDeviceClass
echo "0x00" > /config/usb_gadget/g1/bDeviceProtocol
echo "0x00" > /config/usb_gadget/g1/bDeviceSubClasss
echo "0x0404" > /config/usb_gadget/g1/bcdDevice
echo "0x0200" > /config/usb_gadget/g1/bcdUSB
echo "0x40" > /config/usb_gadget/g1/bMaxPacketSize0

デバイスは正しく起動しますが、ADB USBガジェットを起動できません。初期化ログです。

[1.550749] (7) [1:init] gadgets_make name=g1
[1.552088] (7) [1:init] function_make name=ffs.adb
[1.552104] (7) [1:init] file system registered
[1.558890] (1) [1:init] function_make name=configs
[1.558911] (1) [1:init] Unable to locate . in FUNC.INSTANCE
[1.562824] (2) [1:init] gadget_dev_desc_UDC_store write musb-hdrc
[1.562839] (2) [1:init] configfs_composite_bind
[1.562852] (2) [1:init] composite_dev_prepare 0000000037341456
[1.562870] (2) [1:init] Need at least one configuration in g1.
[1.562878] (2) [1:init] composite_dev_cleanup os_desc_req[0]=(null)cdev>req[0]=0000000037341456
[1.562892] (2) [1:init] configfs-gadget musb-hdrc: failed to start g1: -22

おそらくconfigsフォルダを正しくリンクしていないようですが、次の結果は同じです。

ln -s /config/usb_gadget/g1/functions/ffs.adb /config/usb_gadget/g1/configs/b.1/ffs.adb

Need at least one configuration in g1.実行時にfind /config/usb_gadget/g1ファイルが見つからないと言い続けますが、可能なパスはリストされています/config/usb_gadget/g1/configs/config/usb_gadget/g1/configsつまり、構成に書き込もうとするすべてのファイルは、/config/usb_gadget/g1/configs/b.1私が見つけようとしたときに存在しないため、記録されません。ファイルにどのように書き込むことができますか/config/usb_gadget/g1/configs

ベストアンサー1

このディレクトリを別々に作成する必要があることがわかりました。

    GADGET=/sys/kernel/config/usb_gadget/g1
    mkdir -p "$GADGET"
    mkdir -p "$GADGET"/strings/0x409
    mkdir -p "$GADGET"/configs/b.1
    mkdir -p "$GADGET"/configs/b.1/strings/0x409
    mkdir -p "$GADGET"/functions/ffs.adb

これは、configfsがテンプレートファイルを自動的に入力する必要があるためです。

おすすめ記事