目次: Arduino
以前作ってTarget-1で稼働中の的あてゲーム、Linux側システムにRadxa ROCK 3Cを使っていて、ずっとDebian 11(Bullseye)で稼働しています。お店のシステムはネットワークに繋げていないので、アップデートしていないこと自体は問題ありません。とはいえ故障して新しいボードに置き換えたときに新しいイメージで稼働しないとなると困ります。
実は去年あたりにアップデートしたらどうなるのかちょっと試したら、全然動かなくなってて、直すのも調べるのも面倒で挫折してました。再チャレンジです。
Radxaの公式イメージ配布サイト(Images Download - Radxa Docs)で配布されているROCK 3C向けDebian系イメージは2種類あります。
現在のDebian 11 + Xfce4からDebian 12 + KDEにするには、デスクトップ環境入れ替えなきゃいけなくて面倒なので、とりあえずDebian 11 -> 12アップデート = Debian 12 + Xfce4環境にします。これくらいなら動くでしょ?と思ったら全然動きません。マジかよ、なんでだよ。正確に言うとゲームシステム自体は起動しますが、デスクトップ環境と描画周りがかなり怪しい動きです。目立っておかしいところは下記の3つです。
一番困る奴から見ていこうと思います。
お店で稼働しているROCK 3Cはキーボード未接続なので、自動ログインに失敗するとめちゃ困ります。しかしなぜこうなるのか全然わかりません。うまくいかないときの/var/log/Xorg.0.log.oldを見ると、
[ 10380.104] (II) modeset(0): Output HDMI-1 connected
[ 10380.104] (II) modeset(0): Using exact sizes for initial modes
[ 10380.104] (II) modeset(0): Output HDMI-1 using initial mode 1920x1080 +0+0 ★1920x1080で起動した
[ 10380.104] (==) modeset(0): Using gamma correction (1.0, 1.0, 1.0)
[ 10380.104] (==) modeset(0): DPI set to (96, 96)
(...略...)
[ 10387.451] (--) modeset(0): HDMI max TMDS frequency 225000KHz
[ 10387.499] (II) modeset(0): Allocate new frame buffer 1024x768 stride ★1024x768に切り替えようとして、クラッシュ
[ 10387.527] (EE)
[ 10387.527] (EE) Backtrace:
[ 10387.529] (EE) 0: /usr/lib/xorg/Xorg (OsLookupColor+0x188) [0xaaaab37b08d8]
[ 10387.530] (EE) unw_get_proc_info failed: no unwind info found [-10]
[ 10387.530] (EE)
[ 10387.530] (EE) Segmentation fault at address 0x6af1a5a5ffbea626
[ 10387.530] (EE)
Fatal server error:
[ 10387.530] (EE) Caught signal 11 (Segmentation fault). Server aborting
[ 10387.530] (EE)
[ 10387.530] (EE)
Please consult the The X.Org Foundation support
at http://wiki.x.org
for help.
[ 10387.531] (EE) Please also check the log file at "/var/log/Xorg.0.log" for additional information.
[ 10387.531] (EE)
[ 10387.706] (EE) Server terminated with error (1). Closing log file.
ちなみに自動ログイン時にクラッシュ、X.orgが再起動しているため、Xorg.0.logではなくXorg.0.log.oldを見る必要があります。ややこしいな。ログには特に情報がなく、わかるのは解像度を切り替えようとしたときにクラッシュしたことくらいです。X.orgかXfce4かGPUドライバ(GPU HWはMali-G52)ですかね……。
あら?解像度切り替えで死んでしまうなら、解像度を切り替えなければ良いじゃないこと?(by Claude先生)だそうで。暫定対策としてX.orgの設定を変更して、解像度を最初から1024x768にします。ROCK 3Cの環境はちょうど良いことに、/etc/X11/xorg.conf.d/20-modesetting.confが置いてあるので、こいつを書き換えましょう。
### Valid values for rotation are "normal", "left", "right"
Section "Monitor"
Identifier "Default Monitor"
Option "Rotate" "normal"
Option "PreferredMode" "1024x768" ★この行を追加する★
EndSection
変更後は解像度変更が発生しなくなり、自動ログインに失敗しなくなりました。とりあえずこれで良いでしょう。
しばらく放置すると画面が消えるので、運用上かなり困ります。調べてみると画面が消えるわけではなく、スクリーンセーバーを無効にしているのにスクリーンセーバーが1分で起動しているようです。
設定は上記の画面の通りで、関係する設定項目を書き起こすとこんな感じです。
普通は上位のEnable Screensaver = Falseだから、従属のActivateなんちゃらはTrue/False関係なくスクリーンセーバーが起動しないと思いますよね。普通はそうですが、Xfce4は両方きっちりFalseにしないとスクリーンセーバーが起動します。
挙動が謎すぎてClaude先生にこれバグなの?コード診てくんね?って愚痴ってたら「Xfce4のバグで4.18.3で直ってます、Debian 12は4.16.0なのでバグがまだ直ってないです」とのこと。ええー?こんな超基本的な設定がバグってる……?
興味がわいたので、次回はXfce4を調べてみようかと思います。
この記事にコメントする
目次: 車
前回交換からちょうど半年&5000km走行が同時に訪れたのでエンジンオイル交換に行ってきました。走行距離は71,000kmくらい。オイルにこだわりはないので今回もメーカー指定(Castrol EDGE 0W-20)、量も同じ(7L)です。フィルターは前回変えたので今回はオイル交換のみ、お値段は15,000円くらいでした。オートバックスでこの値段だもの、ディーラーはいくらでやってるんだろうなあ。
前回の交換ではメーターのオイルゲージ表示機能が荒ぶって全くオイルレベルが表示されずに困りましたが、寒くなってきたから?か今回はあっさりオイルレベルが表示されました。XEってもしかして日本の暑さに向いていないのかな、エアコンも効かないし……。
オートバックスでオイル交換すると次回交換時期を書いたカードをくれますが、車から降りるときに座席とセンターコンソールの隙間に落として取れなくなりました。ライトで座席とセンターコンソールの隙間を照らしてみたら、
などが落ちていて取り除きたい気持ちが襲ってきたものの、手が全く入らず取りようがありませんでした。狭すぎる、何だこの隙間は。
この記事にコメントする
目次: Arduino
前回(2026年9月20日の日記参照)Arduino CLIをセットアップしました。今回はROCK 5Bでコンパイルしましたが、タイトルでネタバレしている通りうまくいきませんでした。無念です。
コンパイルのテストのため何もしないスケッチhello.inoを用意します。Arduinoはディレクトリ名と一致するソースコード名が必要で、例えばhelloディレクトリならhello/hello.inoが存在しないとエラーになります。スケッチには最低でもloop()関数とsetup()関数が必要ですから、とりあえず空の関数を書いておきます。
void loop(void) {
}
void setup(void) {
}
Arduino CLIのcompileコマンドはボードのFQBN(Fully Qualified Board Name)を指定する必要があります。board listallで検索すると、M5Stamp C3用のFQBNは"m5stack:esp32:m5stack_stamp_c3"だそうです。
$ ./bin/arduino-cli board listall | grep C3 M5StampC3 m5stack:esp32:m5stack_stamp_c3
これで必要な情報が揃いました。
さっき調べたFQBNとhello.inoを指定してcompileコマンドを実行すると……segmentation faultでクラッシュしました。えー、そんな。
$ ./bin/arduino-cli compile -b m5stack:esp32:m5stack_stamp_c3 hello Used platform Version Path m5stack:esp32 3.3.9 /home/katsuhiro/.arduino15/packages/m5stack/hardware/esp32/3.3.9 Error during build: signal: segmentation fault
PCにインストールしたArduino CLIだとコンパイル成功するので、スケッチは無罪です。コンパイラ自体に何か問題が起きていそうです。
$ ./bin/arduino-cli compile -b m5stack:esp32:m5stack_stamp_c3 hello 最大1310720バイトのフラッシュメモリのうち、スケッチが272094バイト(20%)を使っています。 最大327680バイトのRAMのうち、グローバル変数が13340バイト(4%)を使っていて、ローカル変数で314340バイト使うことができます。
ROCK 5Bはコンパイルが遅いかもなあ?くらいは想定していましたが、まさかコンパイラがクラッシュするとは思いませんでした。どうしようこれ。
この記事にコメントする
目次: Arduino
今まで家にあるM5Stack系ボード(M5Stack Core2やM5Stamp C3)にバイナリを書き込む際、WindowsからArduino IDEを使ってスケッチをコンパイルして書き込んでいました。しかしいつのタイミングかよくわかりませんが、コンパイルが死ぬほど遅くなってやってられなくなったためArduino CLIを試すことにしました。
環境はROCK 5BのDebian 13 Trixieにインストールしてみます。やる前から若干無謀な気がしていますが……これもコンパイルが遅すぎてやってられないようならバイナリだけLinux PCでコンパイルし、書き込みだけROCK 5Bで行う方法を探そうと思います。
初めにarduino-cliをインストール(Installation | Arduino Documentation)します。ディレクトリ名は適当で良く、カレントディレクトリのbinにインストールされます。
$ mkdir arduino $ cd arduino $ curl -fsSL https://raw.githubusercontent.com/arduino/arduino-cli/master/install.sh | sh Installing in /home/katsuhiro/share/projects/arduino/bin ARCH=ARM64 OS=Linux Using curl as download tool Downloading https://downloads.arduino.cc/arduino-cli/arduino-cli_1.5.1_Linux_ARM64.tar.gz install.sh: arduino-cli not found. You might want to add "/home/katsuhiro/share/projects/arduino/bin" to your $PATH arduino-cli Version: 1.5.1 Commit: 01f3d4f2b Date: 2026-06-05T10:22:11Z installed successfully in /home/katsuhiro/share/projects/arduino/bin
次にM5Stackのボードコンフィグを追加します。configの追加の仕方は色々あるみたいです(Configuration | Arduino Documentation)が、YAMLに設定を書き込むconfig init, config addが簡単そうです。デフォルトのコンフィグを変えてしまってよければ、config initを飛ばして最初からconfig addすれば良いようです。
現在の設定を確認するにはYAMLを直接見てもいいし、config dumpコマンドでも表示することができます。コンフィグYAMLファイルは~/.arduino15/arduino-cli.yamlにあり、M5Stackの設定ファイルはpackage_m5stack_index.jsonという名前ですね。
$ ./bin/arduino-cli config add board_manager.additional_urls https://static-cdn.m5stack.com/resource/arduino/package_m5stack_index.json
$ ls ~/.arduino15/
arduino-cli.yaml library_index.json package_index.json package_m5stack_index.json staging
inventory.yaml library_index.json.sig package_index.json.sig packages tmp
$ cat ~/.arduino15/arduino-cli.yaml
board_manager:
additional_urls:
- https://static-cdn.m5stack.com/resource/arduino/package_m5stack_index.json
次はインデックス更新(Getting Started | Arduino Documentation)です。core update-indexコマンドを実行するだけです。インデックスがダウンロードされてズラズラ〜とパッケージの一覧が表示されます。
$ ./bin/arduino-cli core update-index Downloading index: library_index.tar.bz2 downloaded Downloading index: package_index.tar.bz2 downloaded Downloading index: package_m5stack_index.json downloaded Downloading missing tool builtin:mdns-discovery@1.1.0... builtin:mdns-discovery@1.1.0 downloaded Installing builtin:mdns-discovery@1.1.0... Skipping tool configuration.... ...(略)... builtin:dfu-discovery@0.1.2 installed Downloading index: package_index.tar.bz2 downloaded Downloading index: package_m5stack_index.json downloaded
次はM5Stack用のコア(という名前なのか?)をインストールします。今回用事があるのはM5Stack用のコアなので、m5stack:esp32をインストールします。もしその他のボードも持っているのであれば、core searchで探しましょう。core upgradeで古いコアをアップデートできます。
Arduinoは「ボードのブランド:マイコンのブランド or RTOS名」がコアの命名規則だと思われますが、あまり統一感がないですね。core searchの引数を指定しなければ全コアが表示されますので、名前を眺めてみると面白いかも。
$ ./bin/arduino-cli core search m5 ID Version Name m5stack:esp32 3.3.9 M5Stack $ ./bin/arduino-cli core install m5stack:esp32 Downloading packages... m5stack:esp-x32@2601 downloaded m5stack:xtensa-esp-elf-gdb@16.3_20250913 downloaded ...(略)... Installing arduino:dfu-util@0.11.0-arduino5... arduino:dfu-util@0.11.0-arduino5 installed Installing platform m5stack:esp32@3.3.9... Platform m5stack:esp32@3.3.9 installed $ ./bin/arduino-cli core upgrade All the cores are already at the latest version $ ./bin/arduino-cli board listall | grep C3 M5StampC3 m5stack:esp32:m5stack_stamp_c3
最後にboard listallコマンド(変な名前……)でM5Stamp C3がリストにあるか確かめます。左がボード名、右がFQBN(Fully Qualified Board Name)でcompileコマンドの-bオプションに指定する文字列です。ちなみにboard listコマンドは接続中のボードを表示する全く別のコマンドなので混同しないようにしましょう。M5Stamp C3が一覧に出ていれば、C3向けにコンパイルできるはずです。
次はコンパイルに挑みます。
この記事にコメントする
| < | 2026 | > | ||||
| << | < | 10 | > | >> | ||
| 日 | 月 | 火 | 水 | 木 | 金 | 土 |
| - | - | - | - | 1 | 2 | 3 |
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
26年7月26日
26年7月26日
26年7月14日
26年7月14日
26年1月23日
26年1月23日
24年12月9日
24年12月9日
25年12月18日
25年12月18日
25年12月18日
25年11月28日
25年11月28日
25年11月28日
25年10月6日
25年10月6日
25年9月29日
25年9月29日
20年8月24日
20年8月24日
wiki
Linux JM
Java API
2002年
2003年
2004年
2005年
2006年
2007年
2008年
2009年
2010年
2011年
2012年
2013年
2014年
2015年
2016年
2017年
2018年
2019年
2020年
2021年
2022年
2023年
2024年
2025年
2026年
過去日記について
アクセス統計
サーバ一覧
サイトの情報合計:
本日: