最近Arduinoなどのデバイスを数種類接続して使うことが多いので、
MacBookProでProductIDからArduinoのシリアルポートの番号を特定したかった
動作確認済みデバイスはArdinoUnoとLeonardoのみ
Macの「システム情報」を取得する
system_profilerコマンドでシステム情報に載っているものが取得できる
$ system_profiler SPUSBDataType
「システム情報」からLocationIDを抜き出すシェルスクリプト
system_profilerコマンドで取得した情報を使ってProductIDからLocationIDを取得するシェルスクリプトを書く
port_search_pid.sh
#!/bin/sh
PID="$1"
if [ $# != 1 ] || [[ "$PID" != *0x* ]] || [ ${#PID} != 6 ]; then
echo "Please enter your ProductID"
exit 1
fi
ARDUINO_PORT=`system_profiler SPUSBDataType | grep -A 8 "Product ID: ${PID}" | grep -n "Location ID" | grep -o '0x....' | sed -e "s/0x//g"`
ARDUINO_PORT=`ls /dev | grep -e "${ARDUINO_PORT}" | head -n 1 | xargs printf '/dev/%s\n'`
echo $ARDUINO_PORT
使い方
引数にProductID(製品ID)を指定して実行するだけ
$./port_search_pid.sh 0x0043
system_profilerのエラーみたいなものも出るけどよくわからない