ModemManagerトラップ

2018年4月26日木曜日

以前から、何か違和感を感じていた謎が氷解しました。

OnStepを載せたTeensyを動かしていますが、Ubuntu環境においてTeensyのmicsoUSBを使用したシリアル通信ができませんでした。
「これはできないものなんだ」と思ってたんですが、Windowsではできるらしい。。と言うことを最近知ったのでした(ベースシステムがLinuxだとWindows音痴になる典型(^^;)

そういえば、思い当たる節があります。
myFocuserProを使用した自作の電動フォーカサーをINDIで制御していますが、ArduinoのUSBシリアルが繋がらない現象が発生していました。
リトライで問題なくつながるのであまり気にしていませんでしたが、この現象に似ているなーと。

なんとなく、原因はINDI側でもOnStep側でも無いような気がしたので調べてみると、なんと、トラップはModemManager でした。

これはいわゆるLinuxデスクトップ上でモデムを管理するためのバックグラウンドプロセスです。
ADSLや光有線のモデムが繋がれると自動的に検知し初期化してネットワークマネージャで使用できるように管理するものらしいです。今どきだとモバイルルータを接続すると自動的に接続する、なんて場面で使うことがあるでしょうか。
で、これがシリアルデバイスの接続を監視し、接続されているモデムを調べるためにポーリングをしているようです。
この応答にTeensy側のコードが反応したり、意図しない通信が行われ、タイムアウトなどでキャンセルされるまで、他のプロセスが正しくデバイスを使用できない状態になるようです。
なるほど。

で、対策は、udev rulesにて特定のデバイスをModemManagerの管理対象外にする方法、ModemManagerを使用しない方法の2つがあります。
「modemmanager 停止」でgoogleさんに聞けば回答は得られますが、私は面倒なのでModemManagerを削除しました。

# sudo apt-get remove modemmanager

赤道儀に載せるRasPiで、モバイルルータに直接つなげる運用なんてしないし、後々悩むくらいなら最初からなかったことにしてしまえ!と(^^;
もちろん、それでは困る方は、udevで除外指定がいいでしょう。

これで無事、OnStepのTennsy USBシリアルが使用可能になり、INDIで制御できるようになりました。
(あと、myFocuserProのArduino USBシリアルも)

あー、すっきり。

オリジナル 基板頒布

オープンソースの架台制御ソフト、OnStepのハードウェア実装基板などの話題です。


頒布状況 2024/10/3
○ OnStep基板 Rev2.1
× OnStep基板 Rev3.0
○ GBC-SHC 基板 Rev1.0
頒布ご希望の方はこちら、基板頒布のお知らせ をご覧ください。

このブログを検索

Blog Archive

QooQ