ในขณะที่เขียนสิ่งนี้ สาเหตุของการขาดการสนับสนุนสำหรับอุปกรณ์ซีเรียล USB นั้นเกิดจากการที่โมดูลไม่รวมอยู่ในเคอร์เนล WSL
คุณสามารถคอมไพล์เคอร์เนล WSL ของคุณเองด้วยโมดูลโดยทำดังต่อไปนี้:
คุณอาจต้องการการพึ่งพาเหล่านี้: sudo apt ติดตั้ง build-essential flex bison libssl-dev libelf-dev คนแคระ libncurses-dev
โคลน repo WSL2 ด้วย: คอมไพล์โคลน https://github.com/microsoft/WSL2-Linux-Kernel.git
เปลี่ยนไดเรกทอรีเป็นโฟลเดอร์ WSL2-Linux-Kernel: cd WSL2-Linux-เคอร์เนล
แก้ไขการกำหนดค่าเคอร์เนลโดยเรียกใช้ ทำให้ menuconfig KCONFIG_CONFIG=Microsoft/config-wsl
.
ไปที่ ไดรเวอร์อุปกรณ์ -> รองรับ USB -> รองรับ USB Serial Converter
จากนั้นเปิดใช้งานไดรเวอร์ของคุณที่นี่
- ตระกูล CP210x นั้นพบได้ทั่วไปในบอร์ดพัฒนาไมโครคอนโทรลเลอร์
- คุณอาจต้องการให้สิ่งเหล่านี้ถูกอบเข้าไปในเคอร์เนลเพื่อกด
ย
หรือ ช่องว่าง
สองครั้งเพื่อให้แน่ใจว่าเปิดใช้งานด้วย <*>
ค่อนข้างมากกว่า <M>
.
จากนั้นบันทึกและออกจาก menuconfig และเขียนทับ config-wsl
- คุณไม่ควรใช้จุดขีดทับต่อไปนี้ แต่เป็นทางเลือกแทนสองจุดก่อนหน้า -
3. แก้ไขไฟล์ config-wsl: นาโน Microsoft/config-wsl
(หรือใช้ตัวแก้ไขที่คุณเลือก)
âไปที่บรรทัด 2409 (shift+_ ตามด้วย 2409 ใน nano) และแทนที่ # CONFIG_USB_SERIAL_CH341 ไม่ได้ตั้งค่า
กับ CONFIG_USB_SERIAL_CH341=y
â- คุณอาจต้องการทำเช่นเดียวกันสำหรับ CONFIG_USB_SERIAL_CP210X
- อะแดปเตอร์ USB แบบอนุกรมทั่วไปอีกตัว
ปิดโปรแกรมแก้ไขข้อความและบันทึก (ctrl + x
แล้ว ย
แล้ว เข้าสู่
ด้วยนาโน)
สร้างเคอร์เนลโดยใช้การกำหนดค่าเคอร์เนล WSL2: ทำให้ KCONFIG_CONFIG=Microsoft/config-wsl
â- อาจใช้เวลาสักครู่
â- คุณสามารถเร่งความเร็วได้ด้วยอาร์กิวเมนต์ -j แต่อย่าลืมระบุค่าเช่น -j4
คัดลอกเคอร์เนลที่คอมไพล์แล้วไปยังไดเร็กทอรีผู้ใช้ Windows ของคุณ: cp arch/x86/boot/bzImage /mnt/c/Users/<ชื่อผู้ใช้ของคุณที่นี่>/wsl_kernel
สร้างไฟล์ในไดเร็กทอรีผู้ใช้ Windows ของคุณชื่อ .wslconfig และวางสิ่งนี้ลงใน:
[wsl2]
เคอร์เนล = C:\Users\<ชื่อผู้ใช้ของคุณที่นี่>\wsl_kernel
ปิด WSL ด้วย wsl -- ปิดเครื่อง
ในพรอมต์คำสั่งของ Windows
เปิดเทอร์มินัล WSL ของคุณ และตอนนี้คุณควรจะสามารถเชื่อมต่ออุปกรณ์ซีเรียล USB ตามที่ระบุไว้ ที่นี่.
และหวังว่าทุกอย่างจะได้ผล!
(ทดสอบบน Win10 และ Win11 กับ Ubuntu WSL2 distro)