NASが固まった

作業してたら、アプリケーションが固まった。

調べたら、NASをマウントしてるディレクトリへのアクセスが凍るみたい。 ネットワークエラーかと思ったが、NASにログインはできる。 NAS内でいろいろ見てみたら、HDDへのアクセスだけ凍る。

mpt0: attempting to abort req 0xfffffe0000ed7ce0:32249 function 0
mpt0: abort of req 0xfffffe0000ed7ce0:32249 completed
mpt0: attempting to abort req 0xfffffe0000ed7ce0:32249 function 0
mpt0: abort of req 0xfffffe0000ed7ce0:32249 completed
mpt0: attempting to abort req 0xfffffe0000ed7ce0:32249 function 0
mpt0: abort of req 0xfffffe0000ed7ce0:32249 completed
mpt0: attempting to abort req 0xfffffe0000ed7ce0:32249 function 0
mpt0: abort of req 0xfffffe0000ed7ce0:32249 completed
mpt0: attempting to abort req 0xfffffe0000ed7ce0:32249 function 0
mpt0: abort of req 0xfffffe0000ed7ce0:32249 completed

ログをみたら、こういうログが延々と並んでる。

よくわからないけど、再起動したらなおった。

uptimeは90日ぐらい。 メンテしたとき以来かな。

キーリピートがきかない。

気がついたらメインマシンでキーリピートがきかない。 キーボードを抜き差しするとなおる。

色々試したら、またもやx11vncのVNCサーバーが悪いみたい。

キーリピートはクライアントサイドで処理されるから、 サーバーではオフにしているみたい。 終了処理がうまくいかないとオフのままになるみたい。

1Wireについて調査

分割キーボードの左右間の通信を本数は減らしたまま、 3分割(やそれ以上)にしたい。

QMKの1線シリアルは1線で多重通信して、1線で双方向通信している。

前に俺がDMOTEのクローンを作った時は、この線でプロトコルはそのままで、 更に電力も通して、 左右が2線で繋がっている状態にした。

電力を通信線でまとめるプロトコルで有名なのは1Wireだろう。

1Wireについていくつか調べたのでまとめておく。

  • 1つのコントローラに複数のペリフェラルを接続できる。
  • 物理層
    • コントローラはプルアップしておく。
      • 無通信時は電力供給用にFETを使うのが推奨
    • コントローラからペリフェラルへのデータ送信は、コントローラがLOWにしてからHIGHに戻すまでの時間で決める
    • ペリフェラルからコントローラへのデータ通信は、コントローラがLOWにして、HIGHに戻した時に、ペリフェラルが一定時間LOWにキープする事で行なう。
    • 時間は0と1とRESETの3種類がある。
  • データリンク層
    • まず、コントローラはRESETを送る。ペリフェラルはLOWを出して応答する。
    • コントローラは宛先指定用のコマンドを送る。
      • 一般的な方法は、1バイトのコマンドIDと、8バイトの相手アドレス
        • IPv4より大きい空間があるのか。
  • アプリケーション層
    • 各デバイス用に用意したコマンドを実行する。これはデバイスの種類による。
  • 通信速度
    • キーボードに使うとすると、キー数は32ぐらいを仮定する。
    • リセットが480us、リセット応答が最悪480us。
    • 宛先指定コマンドが1バイト、宛先アドレスが8バイト
    • アプリケーションコマンドに1バイト、32キーで4バイト
    • 1ビットあたり60ucだとして、6720usec
    • 1つだと十分高速だけど、10台とか繋ぐとすると、キースキャンが100hzでできなくなりそうだな。
      • アドレスを短かくカスタムした物を作るとかすべき?
  • 参考