7839

雑草魂エンジニアブログ

Windows10のWSL2上のUbuntu20.04でCH340 USBシリアルモジュールを操作する

Windows10のWSL2上のUbuntu20.04で、USBシリアルモジュールを操作しようとした際に、少し手間取ったので備忘録として残しておく。

CH340とは

CH340は中国の南京沁恒微电子股份有限公司(WCH)で開発された、USBシリアル変換チップである。 低価格であるが、通信性能が良いらしい。

ドライバーはWindows10では認識して、自動的にドライバーを入れてくれるのでドライバーのインストールは不要。もし認識されなかった場合は、以下からダウンロード可能である。

WSL2 + Ubuntu-20.04インストール

usbipd-win インストールおよび設定

動作試験

  1. Ubuntu-20.04を起動する
  2. 【管理者Windows PowerShell】起動確認

     PS C:\Windows\system32> wsl -l -v
       NAME            STATE           VERSION
     * Ubuntu-20.04    Running         2
       Ubuntu          Stopped         2
    

    Ubuntu-20.04の起動を確認できた

  3. 【管理者Windows PowerShell】USB(CH340)モジュールをPCに接続し、認識されているUSBを確認し、USB(CH340)モジュールをWSLにアタッチする

     PS C:\Windows\system32> usbipd list
     Connected:
     BUSID  DEVICE                                                        STATE
     2-1    Realtek USB 2.0 Card Reader                                   Not shared
     2-4    HD Webcam                                                     Not shared
     3-4    インテル(R) ワイヤレス Bluetooth(R)                                Not shared
     5-2    USB-SERIAL CH340 (COM7)                                       Shared
    
     Persisted:
     GUID                                  DEVICE
    
     PS C:\Windows\system32> usbipd wsl attach --busid 5-2
     usbipd: info: Using default distribution 'Ubuntu-20.04'.
    
  4. UbuntuUbuntuでUSBが認識できているか確認する

     serip39@DESKTOP-P8SJAGB:~$ lsusb
     Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
     Bus 001 Device 003: ID 1a86:7523 QinHeng Electronics HL-340 USB-Serial adapter
     Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
    

    QinHeng Electronics HL-340 USB-Serial adapterが認識されていることを確認できた

  5. Ubuntu】/dev/ttyUSB0にアクセスする際に、(アクセス権限の設定が必要だったため)今回はroot権限で実行する

     serip39@DESKTOP-P8SJAGB:~$ sudo su
     root@DESKTOP-P8SJAGB:/home/serip39# stty -F /dev/ttyUSB0 115200 | cat /dev/ttyUSB0 &
     [1] 4813
     root@DESKTOP-P8SJAGB:/home/serip39# echo "0x5a\0x00\0xff\0xfe\0xa0\0x05" | xxd -r > /dev/ttyUSB0
     root@DESKTOP-P8SJAGB:/home/serip39# echo "0x5a\0x00\0xff\0xfe\0xa0\0x06" | xxd -r > /dev/ttyUSB0
    

    USB(CH340)モジュールに対して信号を送り、モジュールが信号通りに動作することを確認できた。

  6. 【管理者Windows PowerShell】WSLからデタッチする

     PS C:\Windows\system32> usbipd wsl detach --busid 5-2
     PS C:\Windows\system32> usbipd list
     Connected:
     BUSID  DEVICE                                                        STATE
     2-1    Realtek USB 2.0 Card Reader                                   Not shared
     2-4    HD Webcam                                                     Not shared
     3-4    インテル(R) ワイヤレス Bluetooth(R)                           Not shared
     5-2    USB-SERIAL CH340 (COM7)                                       Shared
    
     Persisted:
     GUID                                  DEVICE
    

まとめ

Windows10のWSL2上のUbuntu20.04から、CH340 USBシリアルモジュールを操作することができた。