Ubuntu CoreはRaspberry Pi 3 model B+では動きませんよ、という話

組み込み機器用のお手軽GUIとして、Qt/embedded + Python + ARM Linux + VNC という構成はなかなか良いのではないか、と思っているのですがなかなか思うようには行きません。

VNCを使ったリモートGUIを使えるならば、組み込み機器は操作の自由度が増えます。なにしろ、パネルからうるさいスイッチやボリューム、メーターなどを一掃できます(そういうものがカッコイイとされる無線機ばかり眺めておいてなんですが)。そして、代わりに搭載されるであろうタッチパネルも廃することができます。

タッチパネルは、製品の場合間違いなくあったほうが良い部品ですが、趣味で使うとなるとめんどくさいものです。もちろん、そういったものに取り組んでいる方はたくさんいますし意味のあることですが、

「タッチパネルを作りたいわけじゃない」

場合には、いまいち対応がめんどくさい部品です。そこでVNCというわけです。

VNCはネットワーク越しにGUIを操作するプロトコルです。シンプルで古臭い設計ですが、革新的な機能を次々取り込む…といったことをしないおかげで安定していて多くクライアント(ユーザーが実際に使うGUIアプリ)が存在します。

自分が作るアプリケーションをVNC対応にしておけば、スマホや、タブレットや、LinuxやWindowsやMacOSから自由にアクセスしてネットワーク越しに機械を操作できます。カウチに寝そべって操作することもできますし、展示会ではかがまずにGUIの説明もできます。プロジェクタに映し出すことだってスクリーンショットだってPC越しに操作していれば簡単です。

良い所ばかりのVNCですが、肝心のアプリケーションがGUIで動かなければどうにもなりません。ということで、ここ最近PyQtをつついていました。これはPythonでQtを操作するバインディングで、Pythonの手軽さでGUIを構築しようというものです。ここはサンプルアプリを動かすことで、そこそこ動くようになりました。

と、いうことでじゃぁ実機でやってみようか思ったわけです。想定したのはUbuntu Core でQt / Embeddedを動かし、仮想フレームバッファにPython操作するGUI描画する。それを、VNCで操作する、というものです。

気を失っているふりをしてRaspberry Pi 3 model B+を購入したのですがなんと!RPi3B+ではUbuntu Coreは起動しないのでした。調べたところRPi3Bまでは対応しているようですが、世界のあちこちで「3B+は起動しない!」と悲鳴が上がっていました。

せっかく買ったのに

まぁ、そういうわけでRPi3B+はしばらくはお蔵入りです。が、この話には続きがあります。

「だったらRPi3Bを使えばいいんだろ、ああん?」

とばかりに勢いでRaspberry Pi 3 model B ( +がない )を発注したのですが、WEBを漁りまくったところ、どうやらPyQt (あるいはPySide)はQt/Embeddedとバインディングできないようです。やっている人がいないんですよね。質問している人はいますが、答えがついていません。

ということで、フルセットのデスクトップOSをヘッドレスとして使うしかないようです。そうすればQt5 / PyQt5 / Python 3 / VNCを使えます。そんなことならRasPi買わなくても良かったのでは?!

あまりひねりのない結果になりそうです。Ubuntu coreはkioskプロジェクトとしてUbuntu coreのMirコンポジターにQtを実装しようとしていますので、それをヘッドレスとして使えるのであればコンパクトで使いやすいシステムになるかもしれません。

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください