Điểm:2

CH340 Thiết bị nối tiếp không xuất hiện trong /dev/ (WSL)

lá cờ cn

Tôi có một bản sao nano arduino với chip nối tiếp CH340. Nó xuất hiện trong lsusb như Bộ chuyển đổi nối tiếp USB QinHeng Electronics HL-340 và khi nó kết nối, tôi có thể thấy nó trong dmesg với nhật ký sau:

[ 31.251098] vhci_hcd vhci_hcd.0: pdev(0) rhport(0) sockfd(3)
[ 31.251544] vhci_hcd vhci_hcd.0: devid(65541) speed(2) speed_str(tốc độ tối đa)
[ 31.252004] vhci_hcd vhci_hcd.0: Đã đính kèm thiết bị
[ 31.538489] vhci_hcd: tốc độ vhci_device chưa được đặt
[ 31.608492] usb 1-1: thiết bị USB tốc độ tối đa mới số 2 sử dụng vhci_hcd
[ 31.698522] vhci_hcd: tốc độ vhci_device chưa được đặt
[ 31.768510] usb 1-1: Đặt Yêu cầu Địa chỉ (2) thành cổng 0
[ 31.812328] usb 1-1: Đã tìm thấy thiết bị USB mới, idVendor=1a86, idProduct=7523, bcdDevice= 2.63
[ 31.812734] usb 1-1: Chuỗi thiết bị USB mới: Mfr=0, Product=2, SerialNumber=0
[ 31.813059] usb 1-1: Sản phẩm: USB2.0-Nối tiếp

Nhưng không có /dev/ttyUSB*.

Cảm ơn.

NotTheDr01ds avatar
lá cờ vn
Bạn đang sử dụng USB/IP hay đang cố truy cập trực tiếp từ WSL? AFAIK, chỉ USB/IP mới hoạt động (và chỉ trong kernel mới nhất mà bạn dường như có).
Leo Bound avatar
lá cờ cn
USB/IP (với usbipd) trong WSL2 trên Win11. Xuất hiện với lsusb là "Bus 001 Device 002: ID 1a86:7523 QinHeng Electronics HL-340 USB-Serial adapter" và uname -r là "5.10.60.1-microsoft-standard-WSL2"
Điểm:5
lá cờ cn

Vì vậy, khi viết bài này, lý do thiếu hỗ trợ cho các thiết bị nối tiếp USB là do các mô-đun của chúng không được bao gồm trong nhân WSL.

Bạn có thể biên dịch hạt nhân WSL của riêng mình với các mô-đun bằng cách thực hiện như sau:

  1. Bạn có thể cần những phụ thuộc này: sudo apt cài đặt build-essential flex bison libssl-dev libelf-dev người lùn libncurses-dev

  2. Sao chép repo WSL2 bằng: git clone https://github.com/microsoft/WSL2-Linux-Kernel.git

  3. Thay đổi thư mục thành thư mục WSL2-Linux-Kernel: cd WSL2-Linux-Kernel

  4. Sửa đổi cấu hình kernel bằng cách chạy tạo menuconfig KCONFIG_CONFIG=Microsoft/config-wsl.

  5. Đi đến Trình điều khiển thiết bị -> Hỗ trợ USB -> Hỗ trợ Bộ chuyển đổi nối tiếp USB sau đó kích hoạt trình điều khiển của bạn ở đây.

    • Họ CP210x cũng phổ biến trên các bảng phát triển vi điều khiển.
    • Bạn có thể muốn những thứ này được nướng vào nhân, vì vậy hãy nhấn y hoặc khoảng trống hai lần để đảm bảo chúng được bật với <*> còn hơn là <M>.

    Sau đó lưu và thoát menuconfig và ghi đè lên config-wsl.

- Bạn có thể không nên sử dụng các điểm sau đây nhưng chúng là một sự thay thế cho hai điểm trước -

3. Sửa đổi tệp config-wsl: nanoMicrosoft/config-wsl (Hoặc sử dụng trình soạn thảo bạn chọn).

âChuyển đến dòng 2409 (shift+_ rồi 2409 trong nano) và thay thế # CONFIG_USB_SERIAL_CH341 chưa được đặt với CONFIG_USB_SERIAL_CH341=y – Bạn có thể muốn làm tương tự cho CONFIG_USB_SERIAL_CP210X - một bộ chuyển đổi usb nối tiếp phổ biến khác.

  1. Đóng trình soạn thảo văn bản của bạn và lưu (ctrl + x sau đó y sau đó đi vào với nano).

  2. Xây dựng kernel bằng cách sử dụng cấu hình kernel WSL2: tạo KCONFIG_CONFIG=Microsoft/config-wsl - Quá trình này có thể mất một chút thời gian â- Bạn có thể tăng tốc độ này bằng đối số -j nhưng đảm bảo chỉ định một giá trị, ví dụ:. -j4

  3. Sao chép kernel đã biên dịch vào thư mục người dùng Windows của bạn: cp arch/x86/boot/bzImage /mnt/c/Users/<your-user-name-here>/wsl_kernel

  4. Tạo một tệp trong thư mục người dùng Windows của bạn có tên .wslconfig và dán tệp này vào đó:

[wsl2]
kernel = C:\Users\<your-user-name-here>\wsl_kernel
  1. Tắt WSL với wsl --shutdown trong dấu nhắc lệnh của Windows.

  2. Mở thiết bị đầu cuối WSL của bạn và bây giờ bạn sẽ có thể kết nối các thiết bị nối tiếp USB như đã nêu đây.

Và hy vọng mọi thứ sẽ hoạt động! (Đã thử nghiệm trên Win10 và Win11 với bản phân phối Ubuntu WSL2)

Biswapriyo avatar
lá cờ ng
Sử dụng menuconfig thay vì chỉnh sửa thủ công tệp cấu hình.
Leo Bound avatar
lá cờ cn
@Biswapriyo Cảm ơn, tôi thực sự chưa bao giờ phải loay hoay với cấu hình kernel trước đây nên không biết cách tốt nhất để làm điều đó. Tôi đã cập nhật phần trên cho phù hợp và đánh giá cao bất kỳ nhận xét nào khác mà bất kỳ ai có.
lá cờ ro
Tôi đã có thể xác nhận rằng cả luồng thủ công và menuconfig đều hoạt động! Tôi đã phải cài đặt libncurses nhưng nếu không thì hoạt động hoàn hảo.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.