ZeroPlusロジアナ(16064) with sigrok on FreeBSD 9.2 on QEMU on FreeBSD7.4

同じように困っている人が世の中には居るかもしれないのでメモ。

  • まず、FreeBSD7.4ではlibsigrok-0.2.2はコンパイルすら通らない。libusbのインターフェースが異なるため。
  • 最近のFreeBSDに入れ換えるのが良いのだが、さまざまな事情により出来ないので、QEMU上で9.2を動かすことにした。
  • しかしながら、9.2(on QEMU)上ではコンパイルは通るものの動作はしない。
  • これはどうやらQEMU上のUSBは下層としてホストのlibusbを使用しているため、そのクセを引き継いでしまっているからの模様。
  • なにが問題かと言うと、bulk読みだしのさい64バイトを超える要求ではデータが揃うのを待ってしまう、そうな。
    • そういえば某ドキュメントスキャナでも似たような問題食らったな…
  • なので、libsigrok-0.2.2/hardware/zeroplus-ligic-cube/api.cのPACKET_SIZEを64に変更し、さらにlibsigrok-0.2.2以降のhardware/zeroplus-ligic-cube/*の修正を適用する…と動いた。
  • なお、こまごまとした転送になるので、データの取り込みは遅くなってるのだろうと思う。動くだけでもヨシとしよう。
  • あと、一回closeされてしまうと以降差しなおすまでなぜか動かず。少々手間だが動くだけでもヨシとしよう。