【Zorin OS / Ubuntu】Arduino IDE 2.3.6 on VirtualBox
仮想環境で心機一転
全く解決策が分からず素直に諦めていたところでしたが、その問題を突破せられた記事が投稿されているのを見つけました。どうして真似せずして居られましょうか。
然り而して、一つ都合の悪いことが顕露します。それは、同名の異なるライブラリーを扱う手順が面倒ということでした。一方を使いたければ、他方を使えない状態にしなければならない。更に迷惑なのは、他ならぬ
本題
註記した通り、
VirtualBox の設定
仮想環境を起動する前に、
+のアイコンで
USBデバイスフィルター
の横、上から二つ目のアイコンで、
ここでは
また記事によっては、敢えてUSB 1.1
を選んでいるものもあります。ここではUSB 2.0
を選んでいますが、特に問題は見られませんでした。
この設定が済んだら、仮想環境を起動します。
Zorin OS の設定
Arduino IDE をダウンロードする
ブラウザーからダウンロードします。ここではAppImage
を選択しています。ZIP file
を選んだ場合は、unzip
コマンドなどで展開します。
Linux AppImage 64 bits (X86-64)
を選ぶ
https://www.arduino.cc/en/software/
AppImage
を実行するため、実行権限を付与します。
プログラムとして実行可能
にチェックする
権限は与えましたが、この時点で未だ
パッケージをインストールする
公式の情報に従い、パッケージをインストールします。apt
が使えるため、In Ubuntu (>= 22.04)
とある方を実行しました。
sudo add-apt-repository universe
sudo apt install libfuse2
インストール中の様子
前者と後者に分けて実行します。前者を実行した際、「Enter」キーの入力を求められます。
$ sudo add-apt-repository universe
コンポーネント 'universe' をすべてのリポジトリに追加しています。
続けるには「Enter」キーを、中止するにはCtrl-cを押してください。
ヒット:1 https://packages.mozilla.org/apt mozilla InRelease
ヒット:2 https://packages.zorinos.com/stable jammy InRelease
ヒット:3 http://jp.archive.ubuntu.com/ubuntu jammy InRelease
ヒット:4 https://packages.zorinos.com/patches jammy InRelease
ヒット:5 https://packages.zorinos.com/apps jammy InRelease
ヒット:6 http://security.ubuntu.com/ubuntu jammy-security InRelease
ヒット:7 http://jp.archive.ubuntu.com/ubuntu jammy-updates InRelease
ヒット:8 https://packages.zorinos.com/drivers jammy InRelease
ヒット:9 http://jp.archive.ubuntu.com/ubuntu jammy-backports InRelease
ヒット:10 https://ppa.launchpadcontent.net/zorinos/apps/ubuntu jammy InRelease
ヒット:11 https://ppa.launchpadcontent.net/zorinos/drivers/ubuntu jammy InRelease
ヒット:12 https://ppa.launchpadcontent.net/zorinos/patches/ubuntu jammy InRelease
ヒット:13 https://ppa.launchpadcontent.net/zorinos/stable/ubuntu jammy InRelease
パッケージリストを読み込んでいます... 完了
$ sudo apt install libfuse2
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています... 完了
状態情報を読み取っています... 完了
libfuse2 はすでに最新バージョン (2.9.9-5ubuntu3) です。
libfuse2 は手動でインストールしたと設定されました。
以下のパッケージが自動でインストールされましたが、もう必要とされていません:
lp-solve
これを削除するには 'sudo apt autoremove' を利用してください。
アップグレード: 0 個、新規インストール: 0 個、削除: 0 個、保留: 0 個。
以上で、
USB を扱う権限の付与
この手順が最も煩雑です。流れを図示しておきます。
-
認識の確認USB
lsusb
コマンドで、認識している
$ lsusb
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 2886:002d Seeed Technology Co., Ltd. Wio Terminal
Bus 001 Device 002: ID 80ee:0021 VirtualBox USB Tablet
Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Seeed Technology Co., Ltd. Wio Terminal
とあり、正しく認識していることが分かりましたが、もう一つ見るべき箇所があります。
Bus 001 Device 003: ID 2886:002d Seeed Technology Co., Ltd. Wio Terminal
^--- ^---
2886:002d
とある内、2886
は「002d
は「
特に2886
は、
$ lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 006: ID 2886:002f Seeed Technology Co., Ltd. Seeeduino XIAO
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
よって2886
を用いれば、「
-
権限のルール設定USB
突然ですが、/etc/udev/rules.d/
の中を確認します。
$ ls /etc/udev/rules.d/ -al
合計 8
drwxr-xr-x 2 root root 4096 4月 8 2022 .
drwxr-xr-x 4 root root 4096 5月 27 22:26 ..
何もありませんでした。ここに、
今回は99_seeed_boards.rules
の名前でファイルを作りました。
/etc/udev/rules.d$ cat 99_seeed_boards.rules
ATTRS{idVendor}=="2886", ENV{ID_MM_DEVICE_IGNORE}="1"
SUBSYSTEM=="usb", ATTRS{idVendor}=="2886", MODE="0666"
SUBSYSTEM=="tty", ATTRS{idVendor}=="2886", MODE="0666"
ATTRS{idVendor}=="2886"
は先の
ENV{ID_MM_DEVICE_IGNORE}="1"
は
MODE="0666"
は権限です。chmod 666
と同様、読み取りと書き込みを全てのユーザーに許可しているようです。
記述参考元
こちらの書籍を参考にしております。
鵜呑みはいけないと色々調べた結果、結局この情報が最適解でした。
こうして定めた新たなルールを適用します。
$ sudo udevadm control --reload-rules
最後に、自分を或るグループに追加します。
- グループへの追加
自分をdialout
グループに追加します。当初は誰も属していませんでした。
$ cat /etc/group | grep dial
dialout:x:20:
グループへユーザーを追加します。幾つかある方法の内、本記事ではこの方法を紹介します。
$ sudo gpasswd -a 「自分のユーザー名」 dialout
ユーザ 「自分のユーザー名」 をグループ dialout に追加
追加されたかどうか確認します。
$ cat /etc/group | grep dial
dialout:x:20:「自分のユーザー名」
$ id
uid=1000(「自分のユーザー名」) gid=1000(「自分のグループ名」) groups=1000(「自分のグループ名」),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),125(lpadmin),137(sambashare)
$ id | grep dial
このようにid
コマンドでdialout
が表示されないため、再起動します。
$ id
uid=1000(「自分のユーザー名」) gid=1000(「自分のグループ名」) groups=1000(「自分のグループ名」),4(adm),20(dialout),24(cdrom),27(sudo),30(dip),46(plugdev),125(lpadmin),137(sambashare)
以上で、全ての設定が終了しました。
跋
Blink
を書き込んでみたところ、正常に動作することを確認できました。今後はこちらを第二の開発環境として使えるようになりました。
前日譚
余談ですが、No upload port found, using /dev/ttyACM0 as fallback
のエラーが解消できず、一度たりとも書き込むことができませんでした。
Discussion