Linuxのシリアル権限
ユーザーに権限がないため、Beam Benchはシリアルポートを開けません。dialoutグループで解決できます。
このような症状が出ます
Linuxでレーザーを接続すると、シリアルポート(/dev/ttyUSB0または/dev/ttyACM0)は存在するのに、次のいずれかが起こります。
- Beam Benchのドロップダウンに表示されない
- 接続時にBeam Benchが「Permission denied」と表示する
原因
Linuxはファイルシステムの権限によってシリアルポートを保護しています。デフォルトでは、シリアルデバイスにアクセスできるのはdialoutグループだけです。ユーザーがこのグループに所属していないと、ポートを開けません。
解決方法
OSレベルでポートを確認する
ls -la /dev/ttyUSB* /dev/ttyACM*crw-rw---- 1 root dialoutなどのエントリが表示される場合、ポートは存在しますが、dialoutグループに制限されています。
dialoutグループに自分を追加する
sudo usermod -aG dialout $USERログアウトしてから再度ログインし、グループの変更を反映させます。(再起動しても反映されます。)次のコマンドで確認します。
groups一覧にdialoutが表示されるはずです。
ディストリビューションで別のグループ名が使われている場合
一部のディストリビューションでは、uucpの代わりにtty(Arch)またはdialoutを使用します。ポートのグループを確認します。
ls -la /dev/ttyUSB04番目の列がグループです。そのグループに自分を追加してください。
ポートが動作することを確認する
再度ログインした後、次を実行します。
echo '?' > /dev/ttyUSB0権限エラーが発生しなければ問題ありません。データを読み返すにはもう少し手順が必要です(screen、minicomを使用するか、Beam Benchを開いてください)。
Beam Benchにポートが表示されない場合
- OSがポートを認識していることを確認します(
ls /dev/tty*)。 - ユーザーがアクセスできることを確認します(
stat -c "%U %G" /dev/ttyUSB0と所属グループを確認します)。 - Beam Benchを再起動して、OSのデバイス一覧を再スキャンさせます。
flatpak、snap、appimageをサンドボックス内で使用している場合
パッケージ化されたLinuxアプリの形式によっては、デバイスへのアクセスが制限されています。使用しているパッケージ形式のドキュメントを確認してください。AppImageでは、--no-sandboxを付けて実行するか、デバイスへのアクセスを明示的に許可する必要がある場合があります。
解決したことを確認する
- Beam Benchのポートドロップダウンにポートが表示される。
- 接続に成功する。
- ConsoleにGRBLのウェルカムメッセージが表示される。
まだ解決しない場合
- ポートが一覧に表示されない。
- ボーレートとシリアルポートのガイド。
- 使用しているディストリビューションと、
groupsおよびls -la /dev/tty*の出力を添えて、Facebookグループに投稿してください。