libusb を macOS Big Sur Ver. 11.4 で使う
Posted by: lesser
libusbは、アプリケーションからUSBデバイスにアクセスするためのライブラリです。githubで公開されています。ドライバのないデバイスをつつくのに便利です。
ビルド
ターミナルを起動し、ソースを展開したフォルダーに移動(cd)します。
libusb % ./configure
libusb % make
libusb % sudo make install
基本的にはこれだけなのですが、必要なツールがインストールされていないと、エラーで止まります。エラーメッセージに何が必要か書かれていますので、都度対応して進めればOKです。僕の場合は、autoconf、aclocal、automake、libtoolをbrewで入れました。
テスト
フォルダ(usbtest)を作り、そこにusbtest.cを書きます。
#include <stdio.h>
#include <libusb-1.0/libusb.h>
int main(){
libusb_device **list;
struct libusb_device_descriptor desc;
libusb_device_handle *handle;
int i, ret;
unsigned char text[512];
libusb_init(NULL);
int cnt = libusb_get_device_list(NULL, &list);
for (i=0; i<cnt; i++){
libusb_device *dev = list[i];
libusb_get_device_descriptor(dev, &desc);
ret = libusb_open(dev, &handle);
if (ret==0) {
libusb_get_string_descriptor_ascii(handle, desc.iProduct, text, sizeof(text));
printf ("iProduct : %s\n", text);
}
}
libusb_free_device_list(list, 1);
libusb_exit(NULL);
return 0;
}
以下のコマンドでテストアプリケーションをコンパイルします。
usbtest % gcc -Wall -lm /usr/local/lib/libusb-1.0.0.dylib usbtest.c -o usbtest
実行すると、
usbtest % usbtest
iProduct : BC LFI4 20000000
iProduct : iPhone
iProduct : USB 10/100/1000 LAN
iProduct : Blackmagic eGPU USB3.1 Hub
iProduct : Blackmagic eGPU USB2.1 Hub
接続されているデバイスの情報が表示されます。
USBデバイスの情報は、アップルメニューから確認できます。