5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ラズパイ USB挿入でスタートアップ時に起動するプログラムを選択

Posted at

説明

ラズパイをテレビにつないでVLCで音楽を聞いたりギターのエフェクターに使ったりしていたんですが、常にVLCを自動起動していて使わないときはいちいち消してました。
音楽はUSBメモリに入れていて違うデバイスを使うときは使わないので、ラズパイ起動時にUSBメモリが挿入されていた時にVLCを起動するようにしたところ便利でした。

そこでUSBオーディオ変換アダプタを挿入していたらPureDataを実行するようにもしてみました

自分の環境

本体
Raspberry Pi Zero W, Windows 10

ソフト
"RASPBIAN STRETCH WITH DESKTOP", Python3, Windows 10

コード

usb-autostart.py
#!/usr/bin/python3
import time
import os
import sys
import usb

# 右がベンダー 左が製品 どちらも10進数であることに注意! 変数名は各自で変えてください
checkmic = (3190, 5663)
checkusb = (13624, 2305)

while True:
    # USBのデバイスをリストにするが、二重リストになっているのでフラットにする。
    usblist = [b.devices for b in usb.busses()]
    usblist = [e for ilist in usblist for e in ilist]
    usblist = [(b.idVendor, b.idProduct) for b in usblist]

    if checkmic in usblist:
        # マイクなら
        os.system('pd')
        break

    if checkusb in usblist:
        # USBメモリーなら
        os.system('vlc')
        break

    else:    #何もヒットしなかったら実行しない
        break

詳細

このコードはUSBデバイスが挿入時にシャットダウンするもので本来はwhileループで常に指定のデバイスがないか確認してました。
起動時に一回だけでいいのでアレンジしました
元のコードはこちらをご覧ください
Raspberry piに特定のUSB機器を差し込むと電源を落とすデーモンをPythonで作る

ちなみにループ内のifのところを増やしたら対応するデバイスを増やせます、削れば減らすこともできます。
これを一度実行してちゃんと動くか確認してからautostartに登録します、
これはこちらをご覧ください
Raspberry PiでPythonプログラムを自動的に起動させる.(autostart)

書き方は
@/usr/bin/python3 /home/pi/usb-autostart.py
と書きました(念のためフルパス)

注意点

whileループの下のコメントアウトの書いてある通り10進数で書く必要があるので16進数から変換する必要があります、各自で調べてください。
(今はそういったサイトがたくさんあって驚いた)

Pi Zero Wは通信USBポートが一つなのでヒットするデバイスが複数あった場合にはなにが起きるか検証できてません。

import usb と書いたのですがこのモジュールは入っていたか覚えていません、ここでエラーが出てしまったら

pip3 install usb
と実行してみてください

万が一「動かないよー」ということがあれば環境とやったことを添えてコメントをください、遅くなるかもしれませんが確認してから返信します。

#参考になったサイト
Raspberry piに特定のUSB機器を差し込むと電源を落とすデーモンをPythonで作る
Raspberry PiでPythonプログラムを自動的に起動させる.(autostart)

5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?