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デバイスの情報は、アップルメニューから確認できます。

アップルメニュー &amp;amp;amp;amp;gt;このMacについて&amp;amp;amp;amp;gt;システムレポート