avrdude
ターゲットマイクロコントローラにプログラムをダウンロードできる簡単なツールです。完全性のために私が実行したいコマンドは次のとおりです。
avrdude -p atmega328p -c usbtiny -P usb -v -U -flash:w:program.hex
このコマンドを実行するたびにエラーが発生し、それを機能させるには'Operation not permitted"
このコマンドを実行する必要があります。sudo avrdude ..
このようにする必要性を変に感じたので、問題を深く掘り下げました。
私が使用しているプログラマーは自分でインストールして/dev/ttyUSB0
グループの一部になりますdialout
。また、デバイスには、dialout
グループ内のすべてのユーザーがデバイスに書き込む権限があり、これは上記のコマンドが実行する操作です。
crw-rw---- 1 root dialout 188, 0 Jul 15 02:04 ttyUSB0
しかし、root
持つデバイスをダイヤルアウトグループに追加するだけでデバイスを使用できるようです。これをやった後まだエラーが発生しました"Operation not permitted"
。
それからavrdude
プログラム自体の問題ではないかという考えがありました。バイナリを見つけた後、/usr/bin
ファイルに対する権限を考慮すると、これは問題ではないことが明らかになりました。
-rwxr-xr-x 1 root root 413888 Oct 21 2013 avrdude
長すぎます。私は適切なグループに属し、ファイルにはそのファイルを使用する権限がありますが、最初に自分の権限を上げないと、そのファイルは使用できません。
答え1
/dev/bus/usb
USBデバイスの低レベル制御は、デバイスの正しい権限を設定することによって行われます。これを行う方法は、udevルールを使用することです。
次のコマンド(例/etc/udev/rules.d/52_local-usbtiny.rules
:)を使用してファイルを生成します。
SUBSYSTEM=="usb", ATTR{idVendor}=="1781", ATTR{idProduct}=="0c9f", MODE="664", GROUP="plugdev"
これでグループがに設定されます。これを使用して所有者を設定plugdev
できます。USER="your-user-name"
次に、udev(たとえば、service udev force-reload
またはsystemctl reload udev
)を再ロードします。新しい権限は、次にプログラマを切り離して再接続するときに適用されます。