格安USBロジアナを sigrok と PulseView で利用する

Amazon などで購入できる激安ロジアナ。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/c0f13aea-a2af-af82-c3e0-3ba57430af05.png)

いろんなところから販売されているが、どれもこれも「Logic Analyzer」ぐらいしか名前がなくて Generic 品風情が強い。しかしその中で KeeYees のロゴが付いているのがあり、おっと思ってこれを選んでみた。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/3f266de0-28f2-89f3-d030-1c8ef69c5f32.png)

しばらくして到着したものは・・・
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/1b9dbfb2-2ba7-6daf-b52d-91ff6b398e0d.png)
結局ノーブランド品ぽいものでした。今回はこれを Ubuntu で動かしてみます。


# 環境

- Ubuntu 22.04 LTS Desktop Ja

# どんなハードウェアかな?

USBコネクタ。mini-B ですねー。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/37db434f-a6ca-5871-a7db-bb75fec8d9d6.png)

中身。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/df81a107-e1f9-98ed-86cf-719a7ff7fe00.png)

このロジアナのクロックはUSBのクロックをそのまま使っているというウワサもありあましたが、24MHzのクリスタルが乗っていました。

付属のジャンパーケーブルをコネクタに刺します。カラーコードを合わせてみましたが、後で使う sigrok のピン番号とずれているのでちょっと問題。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/40844e83-a509-2cfc-49e0-7fd199b525cd.png)


付属のクリップは、自分ではんだづけする必要があります。今回は付属のジャンパーケーブルに刺せるようにするため、ピンを出すことにしました。
ピンヘッダをはんだづけした後に黒いプラスチックを取って組み立てます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/f24afc0f-869c-1349-d694-94f2a98dd852.png)

加工が終わったところ。コネクタの色は6色で2つずつありますが、ケーブルの色の10色には足りないので工夫が必要です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/ad70acb6-472d-bc7b-f649-628a61cc4292.png)




# dmesg の状況

刺してみた。

```
[128636.623732] usb 3-1.3.3: new high-speed USB device number 11 using xhci_hcd
[128636.749653] usb 3-1.3.3: New USB device found, idVendor=0925, idProduct=3881, bcdDevice= 0.01
[128636.749659] usb 3-1.3.3: New USB device strings: Mfr=0, Product=0, SerialNumber=0
```

このロジックアナライザは Salae Logic のクローンという話があったので、このVendorIDを調べてみると・・・

```
$ lsusb
.
.
.
Bus 003 Device 016: ID 0925:3881 Lakeview Research Saleae Logic
.
.
.
```

なるほどー、真っ黒でした。

Saleae Logic のソフトが使えるという話もあるのですが、オープンソースの sigrok を使うことにします。

# sigrok を動かしてみる

Ubuntu のパッケージからインストール。

```
$ sudo apt install sigrok
.
.
.
これを削除するには 'sudo apt autoremove' を利用してください。
以下の追加パッケージがインストールされます:
  sigrok-cli sigrok-firmware-fx2lafw
以下のパッケージが新たにインストールされます:
  sigrok sigrok-cli sigrok-firmware-fx2lafw
アップグレード: 0 個、新規インストール: 3 個、削除: 0 個、保留: 247 個。
67.7 kB のアーカイブを取得する必要があります。
この操作後に追加で 327 kB のディスク容量が消費されます。
続行しますか? [Y/n] 
```

インストールした後、動作確認してみます。


```
$ sigrok-cli -d fx2lafw --show
Driver functions:
    Logic analyzer
Scan options:
    conn
fx2lafw - Saleae Logic with 8 channels: D0 D1 D2 D3 D4 D5 D6 D7
Channel groups:
    Logic: channels D0 D1 D2 D3 D4 D5 D6 D7
Supported configuration options across all channel groups:
    continuous: on, off
    limit_samples: 0 (current)
    conn: 3.18 (current)
    samplerate - supported samplerates:
      20 kHz (current)
      25 kHz
      50 kHz
      100 kHz
      200 kHz
      250 kHz
      500 kHz
      1 MHz
      2 MHz
      3 MHz
      4 MHz
      6 MHz
      8 MHz
      12 MHz
      16 MHz
      24 MHz
      48 MHz
    Supported triggers: 0 1 r f e 
    captureratio: 0 (current)
```

動いてますね。ファームウェアも(何故か)インストールされているようです。

# GUI で動かしてみる

PulseView を使って、sigrok を GUI で操作できるようにしてみます。
こちらも Ubuntu のパッケージでインストールします。

```
$ sudo apt install pulseview
```

起動したところ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/15b8c41c-f629-2732-58e8-0431902a7f66.png)


I2Cの通信を見てみます。BME280 の通信を調べてみます。CH1 に SCL、CH2 に SDA、GNDとGNDをつなぎます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/e8bc45e1-2402-5172-3377-9f83ad9e41b9.png)

PulseView の設定はとりあえずこれにしました。黄色と緑のアイコンを押してデコーダを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/d243d381-36cc-356c-1a45-c54ab67abdc8.png)
デコーダをI2Cにします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/90b62db8-6a6e-8046-f2b9-ab138af09b4b.png)

「Run」を押すとデータが取得できました。D0 が CH1 で SCL, D1 が CH2 で SDA です。
DとCHの番号がズレているのですがどうにかできないのかな? 

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/55ea884a-6f1a-f1d3-0800-6521a35ae2a4.png)

チャンネル名につけかえ、色も修正して見やすくしました。下のチャンネルに I2C の信号が見えてますね。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/6c2be113-703f-de6d-0e85-d65e1f445528.png)

うーんでもデタラメですね。
サンプリングレートが低すぎたようです。

サンプリングレートを高くして、試してみました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/f700b7c6-9285-c086-3a27-b8f67537f4cc.png)

今度は、BME280 の I2C アドレス 76 がちゃんと見えるようになりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/695f35be-cd34-3256-a631-30100aac8b69.png)

これは便利!