Androidでdeb系ぽいLinux環境を実現できるTermuxからAndroidを操作するAPIのTermux-APIのupdateがありました.
Add a USB API compatible with libusb – see https://wiki.termux.com/wiki/Termux-usb for more information.
なんだか気になる更新内容です.
早速試してみます.
まずはパッケージを最新にして関連パッケージを導入
$ pkg update $ pkg install root-repo $ pkg install termux-api $ pkg install libusb $ pkg install clang
termux-usb
コマンドでデバイスを確認してアクセス許可を与える(ここではUSBメモリ)$ termux-usb -l [ "/dev/bus/usb/001/004" ] $ termux-usb -r /dev/bus/usb/001/004 Access granted.
アクセスの許可はAndroidの画面で操作が必要です.
ちなみに,USB Keyboardは認識できませんでした(Androidでは利用できているのに!)
lsusb的にusb情報を表示するプログラムのサンプルをコンパイルして実行
$ cat << __EOF__ > usbtest.c > $ cat usbtest.c > #include <stdio.h> > #include <assert.h> > #include <libusb-1.0/libusb.h> > > int main(int argc, char **argv) { > libusb_context *context; > libusb_device_handle *handle; > libusb_device *device; > struct libusb_device_descriptor desc; > unsigned char buffer[256]; > int fd; > assert((argc > 1) && (sscanf(argv[1], "%d", &fd) == 1)); > assert(!libusb_init(&context)); > assert(!libusb_wrap_sys_device(context, (intptr_t) fd, &handle)); > device = libusb_get_device(handle); > assert(!libusb_get_device_descriptor(device, &desc)); > printf("Vendor ID: %04x\n", desc.idVendor); > printf("Product ID: %04x\n", desc.idProduct); > assert(libusb_get_string_descriptor_ascii(handle, desc.iManufacturer, buffer, 256) >= 0); > printf("Manufacturer: %s\n", buffer); > assert(libusb_get_string_descriptor_ascii(handle, desc.iProduct, buffer, 256) >= 0); > printf("Product: %s\n", buffer); > assert(libusb_get_string_descriptor_ascii(handle, desc.iSerialNumber, buffer, 256) >= 0); > printf("Serial No: %s\n", buffer); > libusb_exit(context); > } > __EOF__ $ gcc usbtest.c -lusb-1.0 -o usbtest $ termux-usb -e ./usbtest /dev/bus/usb/001/004 Vendor ID: 13fe Product ID: 3600 Manufacturer: Product: USB DISK 2.0 Serial No: 07AC10081C16381A
てことでTermuxからlibusbが使えるようになったようです.
ちなみに,lsusbを実行するとこんな感じです.rootedな端末だと使えるんでしょうけど.
$ lsusb lsusb: /sys/bus/usb/devices: Permission denied $ tsudo lsusb /data/data/com.termux/files/usr/bin/tsu: 146: exec: : Permission denied
環境
$ dpkg-query -W termux-api libusb clang clang 8.0.1-4 libusb 1.0.23-rc1-1 termux-api 0.47 $ adb shell dumpsys package com.termux.api | grep -E 'versionCode|versionName' versionCode=38 minSdk=21 targetSdk=28 versionName=0.38 $ adb shell dumpsys package com.termux | grep -E 'versionCode|versionName' versionCode=75 minSdk=21 targetSdk=28 versionName=0.75 $ getprop ro.bootimage.build.fingerprint essential/mata/mata:10/QP1A.190711.122/420:user/release-keys $ getprop ro.build.version.security_patch 2019-09-05 $ getprop ro.product.cpu.abilist arm64-v8a,armeabi-v7a,armeabi