あっきぃ日誌

ラズピッピブログのようなオタクブログのようななにか

Raspberry Pi RM2モジュールのブレイクアウトボードを試す

ラズピッピACの11日目です。なんか続いてる。

Raspberry Pi Advent Calendar 2025 - Adventar

10日目はかぐらぁさんの「ラズピコでPS2対応の弐寺専コンをつくる」でした。Picoで昔の入力系デバイスをどうにかするの、良いですね。ロマンがあるー。

kgr1k50.hatenablog.com

Raspberry Pi RM2モジュールのブレイクアウトを試す

Pimoroniのブラックフライデーの時に買った物が着弾しました。狙ったわけじゃないですが、これでACのネタがもちましたね。

TINY2350は自作キーボードのコントローラー用に買い足したものなので、ただのキーボードになります。RM2 Breakoutが今日の本題。

RM2は今年正式に発表された、Pico Wの無線LANの部分だけ切り出したやつです。

akkiesoft.hatenablog.jp

Pimoroniはその前からなぜか先行して搭載製品を販売していて、今回のBreakoutも去年から存在していましたが、今回はこいつと、これを接続するためのSP/CE用のケーブルをポチりました。

去年はRM2が載ったPico Plus 2Wの動作確認をやっていますが、これでやるのと、他のPico系につなぐのとではまた話が違いますからね。

akkiesoft.hatenablog.jp

というわけでこれがRM2 Breakoutです。スルーホールもありますが、SP/CEケーブルを使えばはんだ付け不要で他のデバイスに接続が可能という設計です。

RM2 Wireless & Bluetooth Breakout (SP/CE)

技適はまだない

残念ながら例によってRM2の技適はまだ取得されていないため、「技適未取得機器を用いた実験等の特例制度」を利用しての実験となります。

https://www.tele.soumu.go.jp/j/sys/others/exp-sp/

FCC/CE以外はカナダとインド程度と、認証国が増えている様子があまり見られないので、日本が追加されるのはいつの日か……。

Approvals - Compliance - Raspberry Pi Radio Module 2 - Modules - Product Information Portal - Raspberry Pi

Python系のサポートもない

MicroPythonは実装が少し進んだところで止まっているようです。おしい。

Support for RM2 break out boards by peterharperuk · Pull Request #16057 · micropython/micropython · GitHub

CircuitPythonは、RM2の入手性を理由に実装が後回しの模様。ぐぎぎ。

Support for Raspberry Pi RM2 wifi / ble module · Issue #9777 · adafruit/circuitpython · GitHub

しかし、Pimoroniがビルドしているカスタム版MicroPythonなら利用できるので、今回はこれを使います。ホントはPicoでやりたいのですが、network.WLAN()にピン番号指定ができる変更が入ってるのはPico Plus 2向けだけのようなので、pimoroni_pico_plus2-v1.26.1-micropython.uf2を使用しました。Pico2W向けでもだめらしいです。

GitHub - pimoroni/pimoroni-pico-rp2350: MicroPython builds for Pimoroni Pico 2 / RP2350 boards.

接続

Pico2に接続した様子がこちら。

配線の内訳はこうです。SPIっぽいのでSPIに合わせて配線していて、実際違うSPIの場所につなぐと動作NGになったりしたのですが、実際にはSPIではないらしい?です。よくわかっておらず。

ケーブルの色 役割 Picoへの接続先
- 未使用
オレンジ 3V3 3V3
CSn GPIO1
SCLK GPIO2
DATA(IN/OUT/WAKEの3つに指定) GPIO0
WL_ON GPIO3
RM2のGPIO0 未使用
GND GND

こちらのコードをベースに、GPIOの設定を追加したバージョンを作ります。

pimoroni-pico-rp2350/examples/pico_plus_2_w/catfacts.py at main · pimoroni/pimoroni-pico-rp2350 · GitHub

import network
import requests
from time import sleep

wlan = network.WLAN(network.STA_IF, pin_on=3, pin_out=0, pin_in=0, pin_wake=0, pin_clock=2, pin_cs=1)
wlan.active(True)
wlan.connect("ssid", "passphrase")

print(wlan.ipconfig("addr4"))
mac_address = ubinascii.hexlify(wlan.config("mac"), ':').decode()
print(mac_address)

while wlan.isconnected() is False:
    print('Waiting for connection...')
    sleep(1)
    
request = requests.get('http://catfact.ninja/fact').json()
fact = request['fact']
print('Cat fact!')
print(fact)

実行するとこんな感じ。無線LANに接続できて、IPアドレスが取得できました。サンプルのコードでURLから取得しているのは、猫のうんちくみたいなのを垂れ流す謎APIのようです。

Waiting for connection...
(中略)
Waiting for connection...
('192.168.29.125', '255.255.255.0')
28:cd:c1:XX:XX:XX

Cat fact!
 A cat only has the ability to move their jaw up and down, not side to side like a human can.

もっと小さく

Pico2につなぐならPico2Wを使えばいいじゃんという話になりますが、そもそもRM2は、自分でRP2040/2350を組み込んだ基板とかに載せて使われることを想定しています。なので、本来的にはPicoのスルーホールでは提供されていない、Pico Wで使われるのと同じGPIOに接続すれば良いことになっています。

ただ、あいにくその予定はないので他のケースを考えると、例えばPico以外のRP2系のボードとかに載せられれば便利になるかもしれませんね。意外と無線を搭載していないボードとかはありますし。

というわけで、TINY2350につないでみました。サイズを追求する代わりに無線は搭載されていないので、TINY2350向けにアドオンボードなんかが作れたら楽しそうです。まあ、Seeed XIAO ESP32C3あたりを使えと言われればそれまでですが、いいの!

そして接続した様子がこちら。GPIO 0〜7はPicoからGNDを抜かした以外同じ配列なので、隙間を詰めて差し替えるだけでした。ファームウェアは先程と同じpimoroni_pico_plus2-v1.26.1-micropython.uf2を使用します。

結果は問題なく動作。フーム、こう言うのを見ると、コンパクトなやつが作れそうだな?というインスピレーションが沸いてきそうです。

ちなみに、本来はWaveShareのRP2040-LCD-1.28に載せてみたくて、その検証用に買ったのですが、RP2向けで使えるMicroPythonが見当たらなかったので、一旦断念という感じです。動くことがわかってから変えと言われればそうなのですが。これで動くのがわかれば、RM2が載る拡張ボードとかも作れますね。絶妙に使いみちがなくて困ってるので、なんとかネットワーク接続に対応したいところ。つって、有線LANに対応したやつも使い所を思いつけなくて放置してるので、もうこれ自体だめなんじゃないかという説も。

akkiesoft.hatenablog.jp

今後に期待、技適は早くくれ

手軽に扱うためのPython系の実装が見当たらないので、私は一旦様子見という感じになりそうです。実装オナシャス。

……というパッとしないブログを読まされてきて「じゃあいまいちっぽいし、技適も来ないんじゃね〜」と思うじゃないですか。でも海外ではRM2を組み込んだ面白そうなブツがポコポコ作られていくわけで、そうなった時に日本じゃ使えねえ〜!となってしまうので、技適自体は頑張って取得いただきたい次第です。

先行でRM2採用製品を作ってきたPimoroniはつい最近、新たにバッジシリーズ「Badgeware」を発表してきました。Badger2040とかのシリーズをアップデートしつつ、RM2を載せた製品になっています。

badgewa.re

個人的にはBlinkyが気になっています。

裏面、RM2とかバッテリーとかが見えますね。

……みたいな、いい感じアイテムが出てきても、特例を使わないと日本じゃ使えないよ〜、都度検証内容書くの面倒だよ〜!なんてことになるので、技適はよ頼む〜!という感じです。

続・HyperPixel2.1 RoundのRPi OS Linux 6.12対応 & CM5のIOボードのリビジョン変更(なお半年前)

ラズピッピAC2025 9日目、やりますか。

Raspberry Pi Advent Calendar 2025 - Adventar

8日目はkazuedaさんの、Pico系に載せたLCDをGUD規格でPCのサブディスプレイにできる話でした。全然知らんかった。あと、これをやってるオリジナルがfbtftのnotro氏なんですね。fbtftもちっさい系ディスプレイ向けな感じなので、そう言うのすきな方なのかも?

zenn.dev

kazuedaさんの記事のURL、Adventarの方はアカウント名が抜けてエラーになっていたので、直してもらえると助かります〜。

続・HyperPixel2.1 RoundのRPi OS Linux 6.12対応

できたやつをIssueのコメントに書いたところ、コードを確認した6by9氏からいくつかコメントを貰いました。基本的に私の理解不足が起因なので、どの指摘についても、知らなかったっす……と返すしかなかったのですが、それらについて追加で修正をもらっていて、手元でも問題なく動作したので、このままsquashコミットとしてプルリクされました。(追記:Mergeされました。次の6.18向けにも採用されたようです。)

Raspberry Pi OSのことながら、Linuxカーネルのコミットに名前が入ることになり、オゥフ……という感じですね。

github.com

本家Linuxカーネルに入れるには、ハードウェアがピンポイントすぎるのと、リセットピンの扱いをRequiredからOptionalに変えてしまっているのとで、おそらく難しいのかなと思います。あと、本家のHEADがどうなってるのかまで見てないですし。あとで見てみようかな。

CM5のIOボードのリビジョン変更(なお半年前)

hacksterの記事から、CM5のIOボードがリビジョン変更していたようです。

www.hackster.io

記事では本家の発表はないと書かれていますが、こう言う変更がある場合は、Raspberry Pi Product Information Portal(PIP)に情報が上がっています。ちゃんと上がっていました。

PCN - Raspberry Pi Compute Module 5 IO Board - Modules - Product Information Portal - Raspberry Pi

PDFを読むに、変更自体は6月には行われていたようなので、前のリビジョンの在庫が捌けて、新リビジョンが流通し始めたので気づかれたという感じでしょうか。ただ、IOボードはポートの位置が若干変わっていたり、ケースもファンの位置が変更されているそうなので、バラバラに買ったらリビジョンが違って載せられないとかになるとしんどそうですね。

IOボードの変更は以下の通り。主にファンの改善が大きそうですね。

  • シャットダウン時のファンコントロールの改善
  • ファン出力にプルアップ抵抗を追加して、内部にプルアップ抵抗を持たないファンに考慮。
  • LEDの回路をシンプルになるよう見直し
  • USB_OTG_IDとSync_Outピンのシルク印刷のエラーを修正

リビジョン2と1の違いは、基板上の製品名の部分で見分けられるそうです。R2の文字があればRevision2とのこと。

R2ってWindows2003を思い出すな……(ジジイ!)

さておき、Revision1持ちとしてはやや気になりますが、買い替えるほどかと言われるとそうでもないので、そんなこともあったんだ〜、くらいの感想でした。

Windows11 ProでRDPが有効にできなくなったときの対処法 & RTL8127な10GbE NICを試す

特にアドカレというわけでもなく、Windows環境の話題の2本立て。

Windows11 ProでRDPを有効にできなくなったときの対処法

わりと最近、足元にいるWindows11 ProにMacからRDP接続しようとしたら、接続できなくなってしまいました。

設定を見るとなぜかオフになっていて、なんでやねんと思いつつ有効にしようとしたら、オンになろうとしながらも一瞬でオフになってしまう、謎の挙動を見せられました。何。

前回調べたときは、いつかのパッチが悪さしてるとか、色々でてきたのですが、ついさっき調べ直したらなんか違うのがでてきました。

learn.microsoft.com

https://www.reddit.com/r/sysadmin/comments/1o93tn9/comment/nl17svk/

どうも、更新の適用時にファイアウォールの設定が吹き飛ぶことがあるらしく、これを初期設定に戻すことでRDPの設定もオンにできるようになるとのこと。初期化は以下のコマンドを管理者権限のあるコマンドプロンプトに投げるだけ。ただし、初期化されるので、カスタム設定を投入している場合はメモしておくなどの対応が必要そうです。

netsh advfirewall reset

リセット後、RDPが有効にできることを確認できました。

ファイアウォールの設定が吹き飛ぶねえ……と思って気づいたのですが、リセットをやる前にファイアウォールの設定を見たら、なんかやたら少なくて、RDPもないから変だなあと思ってカスタムルールを試すなどをしていたのを思い出しました。

改めてファイアウォールの設定を見に行ったら、項目数がなんか増えていて、見覚えがある感じになっていたので、まさかここの設定をアップデートがぶっ壊すことなんかあるんだ……という気持ちになりました。

Microsoft大丈夫なんすかね。これとは別件で、なんだかなあと言う体験を秋以降2回くらい体験してしまっているので、なんだかなあ。

RTL8127な10GbE NICを試す

別記事にするほどでもないので。AliExpressの11.11セールで、RealtekのRTL8127搭載の10GbEを買ってみました。4,908円。届いたカードは驚くほど小さく、ついにこんなカードで10Gbができる時代が来たかあとなりました。

素の状態では2.5GbEとして認識していましたが、ドライバーを導入したら10GbEリンクになりました。

世の中のレビューはここでインターネットテストに行きだして、お前んちは10Gb回線なんか羨ましいな!となるんですが、うちは1Gb回線なのでiperf3で自宅サーバーくんとの間でテストです。結果はふつうに9.5Gbくらいを出しており、良好そうです。

samba(NVMeに載ったVM上のファイルシステム)からPC(ストレージはNVMe)へのファイル転送は420MB/sくらい(3.3Gb/sくらい?)で、こちらはもう少しでても良さそうですが、まあ良いでしょうというかんじでした。

RTL8127は発熱も低いんだそうですが、そんなの触りながら使うやつはおらんやろと思いつつも、一応触ってみた感じ、ちょっと熱め?でした。でも10GbEってこんなもんなのでは。

自宅の常設の10GbE用ポートはSFP+のポートの方が多いので、RJ-45をつなぐには変換が必要となり、ちょっとなあという気持ちにもなるので、RJ-45だらけの10GbEスイッチも欲しくなってくる今日このごろですが、スイッチの方は安くなってるんですかね……?アリエクをパット見、3万円台っぽいですけど、XikeStorあたりそろそろ価格破壊して2万円台にしてくれたりしないかな〜。

ちなみに、これはどっちかと言うとPi 5に載せて遊びたかったんですが、残念ながらRTL8127は6.16からカーネルに搭載のようなので、現状6.12なRPi OSではお預けという感じです。カーネルバージョンが上がったらリトライしましょう。

Pimoroni HyperPixel2.1 RoundのRaspberry Pi OS カーネル6.12対応を自分でやってみた

うまいことネタができたっぽいので、Raspberry Pi Advent Calendar 2025の7日目です。

adventar.org

6日目は信濃眞伊さんのRaspberry Pi 3で遊ぶ記事でした。NetBSDのチョイスが渋いと言うか、使ってるカメラも絶対渋いやつだ……!今年のOSCで出会った若手なので、今後のさらなる活躍に期待しています。

zenn.dev

Pimoroni HyperPixel2.1 RoundのRaspberry Pi OS Kernel 6.12対応を自分でやってみた

OSC福岡の時にカメラデモの環境を再構築したらドライバー未対応にはめられて泣いた件の続きです。

akkiesoft.hatenablog.jp

Raspberry Pi OSがカーネル6.12に移行した際に、Upstreamのドライバーのコードと、RPi OSのカーネル6.6のドライバーにパッチとして当てられたHyperPixel2.1 Round対応のコミットがコンフリクトしてて、解消が見送られていたせいで動かなくなっていたのでした。

今回は、これを自分なりにコンフリクト解消できるのかの検証をした記録です。たぶん動いたので、コミットを上げて、まずはPRではなく先日立てたIssueに動かせましたわと報告しておきました。自信がないため。

github.com

カーネル6.6のパッチには、SPIサポート・RGBモードサポート・HyperPixel2 Roundサポートの3点が含まれていて、このうちカーネル6.12のアップストリームに追加されたSPIサポートがぶつかっていました。よって、アップストリームのお作法に従って、HyperPixel2 RoundのSPIサポートを追加し直せばイケるんじゃね?という感じで実装してみました。

st7701_spi_of_matchとst7701_spi_idsは、元のコードからほぼそのまま移植。どうせ名前だけでしね。

Support Pimoroni HyperPixel 2.1 Round for Linux 6.12 · Akkiesoft/linux@3f5d1e2 · GitHub

次にtxw210001b0_descとhyperpixel2r_descの定義。6.6でのSPI実装を使わないため、ここはあまり原型をとどめていないです。modeはそのままなのと、RGBモードのサポートのためにmediabus_formatが持ちこまれたくらい。init_sequenceのかわりにgip_sequenceを使うように変えた(ここは自信ないけどinit_sequenceは使えなくなってる?かも)というかんじ。アップストリームのお作法に従ってpv_gammaとnv_gammaを追加して、txw210001b0_init_sequenceに書かれていたパラメータを移植しましたが、これは本題じゃない気がします。

Support Pimoroni HyperPixel 2.1 Round for Linux 6.12 · Akkiesoft/linux@3f5d1e2 · GitHub

txw210001b0_modeはそのまま。

Support Pimoroni HyperPixel 2.1 Round for Linux 6.12 · Akkiesoft/linux@3f5d1e2 · GitHub

txw210001b0_init_sequence あらため txw210001b0_gip_sequenceは、pv_gammaとnv_gammaの分がいなくなったのと、SPI_WRITEをST7701_WRITEに変えたり、DSI_XXXの定数をST7701_XXXに変えたりしたくらい。あと、他のところもそうですが、たぶんRPi OSの実装ではSPIモードの時に0x100を論理和するようにしていたっぽくて、アップストリームではそうなっていなかったので全部無くしました。

Support Pimoroni HyperPixel 2.1 Round for Linux 6.12 · Akkiesoft/linux@3f5d1e2 · GitHub

そう言う意味では、6.6から持ってくる必要があった追加の定数も、0x100の考慮は無くしました。

Support Pimoroni HyperPixel 2.1 Round for Linux 6.12 · Akkiesoft/linux@3f5d1e2 · GitHub

RGBモードの追加。HyperPixel2.1 RoundのパネルにはMIPI版とRGB版とUART版(?)があるらしいのですが、どうもRGB版なのでRGBのサポートが必要らしいです。でもこれを書くのとinclude足すだけで済んだので良かったです。これを持ち込む前は色がぶっ壊れた状態で表示されていました。

Support Pimoroni HyperPixel 2.1 Round for Linux 6.12 · Akkiesoft/linux@3f5d1e2 · GitHub

ここは、このcommitの再現を入れましたが、うちではやらなくても動いてたので、必要なのかは不明ですが、あっても良さそうなので一応いれました。

Support Pimoroni HyperPixel 2.1 Round for Linux 6.12 · Akkiesoft/linux@3f5d1e2 · GitHub

ここが一番悩んだポイント。単に_optionalを見落としていただけなのですが、_optionalがない場合、DeviceTreeでreset-gpioが必須パラメータとして扱われるため、たぶんresetピンを持っていないHyperPixel2.1 Roundが、ドライバーロード時に失敗してしまうのでした。もしかすると、descあたりにリセットピンがないことを知らせるフラグを作ってあげて、それの有無で条件分岐しても良いのかもしれませんが、わからんので雑に_optional化です。

Support Pimoroni HyperPixel 2.1 Round for Linux 6.12 · Akkiesoft/linux@3f5d1e2 · GitHub

よかった

気になりすぎて沖縄に持っていっていじったろうかとも思っていたくらいなのですが(我慢した)、なんとかなって良かったです。私の雑実装をとっかかりに6.12対応が進めばいいですね。ただ、あっちの人たちって確か、ぼちぼち仕事納めじゃなかったっけな……?まあ、どちらにしてもすぐ見てもらえるとも限らないので、気長に。

Raspberry Pi OS 2025/12/4版と、今年のEEPROMアップデートふりかえり

べつに今年は完走を目指してはいないのですが、Raspberry Pi Advent Calendar 2025の5日目です。

Raspberry Pi Advent Calendar 2025 - Adventar

Raspberry Pi OSの2025/12/4版がリリースされていたので拾い読みしつつ、それだけだと何なので、今年のPi 4とPi 5のEEPROM更新について振り返ってみようと思います。

Raspberry Pi OS 2025/12/4版

各種不具合修正と改善といえばそれまでですが、いろいろ修正したようです。ファームウェアLinuxカーネルも前回から変更はありません。

https://downloads.raspberrypi.org/raspios_armhf/release_notes.txt

2025-12-04:
  * Added ability to safely eject HDD and NVMe drives connected via USB
  * Added Alt-F2 shortcut to open run dialog in labwc desktop
  * Screens control panel no longer creates a default kanshi config file when started
  * Bug fix - crash when using mounted drives or wastebasket in Places view
  * Bug fix - crash when unloading system monitor plugin
  * Bug fix - crash when power-cycling audio devices
  * Bug fix - Bluetooth plugin icon not being hidden correctly on devices with no Bluetooth hardware
  * Bug fix - crash in file manager which switching to a TTY
  * Raspberry Pi firmware 676efed1194de38975889a34276091da1f5aadd3
  * Linux kernel 6.12.47 - 359f37f0faefb712add32a39f98751aea67d5c1f

今年のEEPROMアップデートふりかえり

Pi 4/Pi 5のEEPROMイメージの更新は、コミットが出るたびにMastodonの方で雑にコメントをしています。

EEPROM の検索結果 - @akkiesoft@social.mikutter.hachune.netの投稿 - notestock

2025-01-06版(2712)では、Pi 5起動時のファン回転時間が減る変更が来ていました。あれそんな最近でしたかね(ジジイ)。翌日にはすぐに修正が入っていたようですが。

https://social.mikutter.hachune.net/@akkiesoft/113784209535533585
https://social.mikutter.hachune.net/@akkiesoft/113789798960845146

2025-01-13版(2712)は、Pi 5 16GB向けのメモリの調整。出荷時から更新すると、メモリ性能が改善される系のやつでした。

https://social.mikutter.hachune.net/@akkiesoft/113821833100906321

2025-01-14版(2712)は、ワンタイムブートっぽいやつの実装。

https://social.mikutter.hachune.net/@akkiesoft/113827570571093294

2025-02-11版は2711と2712両方。共通する機能は両方更新されることがあります。そして、CM5向けの、Wi-Fiがないモデルの電力出力の改善。

https://social.mikutter.hachune.net/@akkiesoft/114013990283592506

めた先輩が、rpi-eepromをAlmaLinuxに含めるにあたり、ライセンス情報がPi4の頃から更新されていなかったので、問い合わせて更新してもらったという内容ですね。

https://social.mikutter.hachune.net/@akkiesoft/114025557691012912

2025-05-08版(2712)と2025-02-24版(2711)は、インターネットブート機能のTCPの性能改善。

https://social.mikutter.hachune.net/@akkiesoft/114475276402421554

2025-06-20版(2712)は、ウォッチドッグ、OSでしかやってしなかったファン制御用の温度監視をファームウェアでもやる改善、SDカードが刺さってないときにブート順からSDカードをスキップする改善。

https://social.mikutter.hachune.net/@akkiesoft/114718693076879104

2025-09-22版は2712と2711両方のリリース。ブートローダーの解凍にLZ4のサポートが追加されました。圧縮率がLZ4のほうが良いのでということで追加された模様。

https://social.mikutter.hachune.net/@akkiesoft/115248990892704926

2025-09-25版(2712)はUARTのボーレート変更に対応。いじりたい人いるんかなって言ったら、いじりたいっしょって言われたようなうろ覚え。

https://social.mikutter.hachune.net/@akkiesoft/115267762777902626

2025-10-08版(2712と2711)。Pi 5はNVMe ドライブの4Kネイティブセクタの暫定サポートが入りました。

https://social.mikutter.hachune.net/@akkiesoft/115341400162936642

2025-10-17版(2712)は、D0ステッピングでのパフォーマンス改善、GPTパーティションのネイティブ4Kサポートが入りました。rpibootの検出方法の変更はこの数日前に2711向けにもリリースされています。

https://social.mikutter.hachune.net/@akkiesoft/115391975246404823

2025-11-05版は2711と2712両方で、Fake NUMAの問題によって、一部ベンチマークでパフォーマンスが悪かった問題が修正されています。

https://social.mikutter.hachune.net/@akkiesoft/115500578837689258

2025-11-27版も2711と2712両方で、複数USB MSDを接続した場合のブート失敗?に関する不具合が修正されているようです。

https://social.mikutter.hachune.net/@akkiesoft/115624680777369926

さて、長くなりましたが、こうしてみると、今年もちまちまと修正とか改善が盛り込まれていることがわかります。実際にはこれらで全部ではなく、産業向けを意識したような、一般ユーザー?からしたらよくわからんような変更もいろいろ入っています。そして、Pi 4向けの改善もまだ積極的に行われていることがわかりますね。

お手持ちのPi 4、Pi 5も、気が向いたら更新してあげてみてください。