วิธีเชื่อมต่ออุปกรณ์ USB ในระบบย่อย Windows สำหรับ Linux ภายใต้ Windows 11

เป็นไปได้ที่จะเชื่อมต่ออุปกรณ์ USB ในระบบย่อย Windows สำหรับ Linux ภายใต้ Windows 11 และทำงานร่วมกับอุปกรณ์เหล่านั้นได้โดยตรง

ลิงค์ด่วน

  • usbipd-win คืออะไร
  • เชื่อมต่ออุปกรณ์ USB ภายใต้ระบบย่อย Windows สำหรับ Linux
  • มีทางเลือกอื่นของ GUI หรือไม่?

ไมโครซอฟต์เปิดตัว ระบบย่อย Windows สำหรับ Linux (WSL) เมื่อไม่นานมานี้ ซึ่งรองรับการเรียกใช้แอพลินุกซ์โดยตรงจากการติดตั้ง Windows ของคุณโดยไม่จำเป็นต้องตั้งค่าเครื่องเสมือน WSL มีข้อจำกัดบางประการเนื่องจากเป็นเลเยอร์ที่เข้ากันได้ที่ซับซ้อน การใช้งานครั้งแรกไม่ได้ใช้เคอร์เนลของลินุกซ์แบบเต็มด้วยซ้ำ ดังนั้นแอพพลิเคชั่นหลายตัวจึงประสบปัญหาความเข้ากันได้ เวอร์ชัน 2 มีการปรับปรุงมากมาย แต่ยังมีบางสิ่งที่ยังขาดหายไป: รองรับการเชื่อมต่ออุปกรณ์ USB จริง

หากคุณเป็นผู้ใช้ Windows Subsystem สำหรับ Linux และต้องการเข้าถึงอุปกรณ์ USB จากอินสแตนซ์ Linux ที่ทำงานภายใต้ WSL คุณจะยินดีที่ได้ทราบว่ามี ความก้าวหน้าที่สำคัญ ที่ด้านหน้านี้ ขอบคุณการสนับสนุนของ Microsoft ในโอเพ่นซอร์ส usbipd ชนะ โครงการ ตอนนี้คุณสามารถเพลิดเพลินกับการเข้าถึงผ่าน USB ใน WSL หมายความว่าผู้ใช้ปลายทางสามารถทำงานต่างๆ เช่น แฟลชอุปกรณ์ Android ภายใต้ระบบย่อย Windows สำหรับ Linux ซึ่งระบบย่อย Linux ไม่รองรับ

usbipd-win คืออะไร

โครงการ usbipd-win เป็นเรื่องเกี่ยวกับการสร้างโซลูชันสำหรับการแชร์อุปกรณ์ USB ที่เชื่อมต่อในเครื่องกับเครื่องอื่นๆ รวมถึงแขก Hyper-V และ WSL2 อย่างไรก็ตาม เคอร์เนล WSL2 Linux อย่างเป็นทางการเคยขาดการสนับสนุนสำหรับ โปรโตคอล USB/IPกำหนดให้ผู้ใช้สร้างเคอร์เนลเอง

ตั้งแต่เคอร์เนล WSL เวอร์ชัน 5.10.60.1 พารามิเตอร์ที่จำเป็นได้รับการกำหนดค่าทันที ดังนั้นจึงไม่จำเป็นต้องคอมไพล์ใหม่ด้วยตนเอง นอกจากนี้ Microsoft ยังสนับสนุนอินเทอร์เฟซบรรทัดคำสั่งให้กับโครงการเพื่อเปิดใช้งานอุปกรณ์ USB สำหรับการแชร์บน Windows และเชื่อมต่อจากภายใน WSL ได้อย่างราบรื่น

เชื่อมต่ออุปกรณ์ USB ภายใต้ระบบย่อย Windows สำหรับ Linux

ก่อนเริ่ม ตรวจสอบให้แน่ใจว่าคุณกำลังวิ่งอยู่ วินโดวส์ 11 และได้ติดตั้งการอัปเดต WSL ทั้งหมดแล้ว ดังที่ได้กล่าวไว้ก่อนหน้านี้ คุณต้องใช้ WSL 2 Linux distro เพื่อให้สิ่งนี้ทำงานได้

  1. รันคำสั่งต่อไปนี้จากภายใน WSL:
    uname -a
    หากแสดงเคอร์เนลเวอร์ชัน 5.10.60.1 หรือใหม่กว่า (ตามที่แสดงด้านล่าง) แสดงว่าคุณพร้อมแล้ว
    • หากเคอร์เนลเวอร์ชันที่ติดตั้งเก่ากว่า 5.10.60.1 สามารถอัปเดตได้โดยใช้คำสั่งต่อไปนี้:
      wsl --shutdown
      wsl --update
  2. ตรงไปที่ repo GitHub ของโครงการ usbipd-win แล้ว ดาวน์โหลดและติดตั้งรุ่นล่าสุด.
    • usbipd-win เวอร์ชันล่าสุดรองรับการติดตั้งไดรเวอร์แบบเงียบ ต้องขอบคุณไดรเวอร์ที่ได้รับการรับรองจากโปรแกรม Windows Hardware Compatibility Program นอกจากนี้ยังสนับสนุน การสร้างช่อง Dev ของ Windows 11
    • นอกจากหน้าเผยแพร่บน GitHub แล้ว คุณสามารถติดตั้งและอัปเดตแอปโดยใช้ Windows Package Manager CLI (หรือที่เรียกว่าวิงเก็ต)
      winget install--interactive --exact dorssel.usbipd-win
  3. ติดตั้ง user space tools สำหรับ USB/IP และฐานข้อมูลของตัวระบุฮาร์ดแวร์ USB หากคุณใช้ Ubuntu บน WSL ให้ดำเนินการคำสั่งต่อไปนี้:
    sudo apt install linux-tools-virtual hwdata
    sudo update-alternatives --install /usr/local/bin/usbip usbip `ls /usr/lib/linux-tools/*/usbip | tail -n1` 20
    • คุณสามารถเลือกเมตาแพ็กเกจต่างๆ ได้ (เช่น linux-tools-generic) เช่นกัน ขึ้นอยู่กับ distro ที่ติดตั้ง อย่างไรก็ตาม คุณอาจต้องปรับตัวแปรพาธในขั้นตอนถัดไป ตามหมายเลขเวอร์ชันของเมตาแพ็กเกจ
    • สำหรับ distros อื่นๆ โปรดดูเอกสารประกอบของเครื่องมือการจัดการแพ็คเกจที่เกี่ยวข้อง
  4. ในกรณีที่ลิงค์สัญลักษณ์ถูกสร้างโดยใช้ update-alternatives คำสั่งในขั้นตอนก่อนหน้านี้ใช้งานไม่ได้สำหรับคุณ คุณสามารถแก้ไขตัวเลือก sudo ด้วยตนเองเพื่อให้ผู้ใช้รูทสามารถค้นหา usbip สั่งการ. โดยแก้ไขไฟล์ /etc/sudoers ไฟล์ที่ใช้ sudo visudo และเพิ่ม /usr/lib/linux-tools/-generic ถึงจุดเริ่มต้นของ secure_path. ควรมีลักษณะดังนี้:
    Defaults secure_path="/usr/lib/linux-tools/5.4.0-77-generic:/usr/local/sbin:..."
  5. เปิดอินสแตนซ์ Terminal ใหม่ในฐานะผู้ดูแลระบบและพิมพ์คำสั่งต่อไปนี้เพื่อแสดงรายการอุปกรณ์ USB ทั้งหมดที่เชื่อมต่อกับ Windows
    usbipd wsl list
  6. จดบันทึกค่า BUSID ของอุปกรณ์ USB ที่คุณต้องการเชื่อมต่อกับ WSL ถัดไป เรียกใช้คำสั่งต่อไปนี้เพื่อเริ่มต้นกระบวนการแนบ WSL จะแจ้งให้คุณป้อนรหัสผ่านเพื่อเรียกใช้คำสั่ง sudo
    usbipd wsl attach --busid <busid>
    ตัวอย่างเช่น เรากำลังแนบอินเทอร์เฟซ Fastboot ของอุปกรณ์ Android กับ WSL จากอินสแตนซ์ Windows 11 ของโฮสต์:
  7. ตอนนี้เปิดอินสแตนซ์ WSL 2 ใหม่แล้วเรียกใช้ lsusb คำสั่งเพื่อดูอุปกรณ์ USB ที่มี ควรแสดงรายการอุปกรณ์ที่แนบมา
  8. แค่นั้นแหละ! ตอนนี้คุณสามารถทำงานกับอุปกรณ์ USB ของคุณได้โดยตรงจาก WSL

เมื่อเสร็จแล้ว คุณสามารถถอดอุปกรณ์โดยใช้คำสั่งที่แสดงด้านล่าง เรียกใช้จากอินสแตนซ์เทอร์มินัลที่ทำงานในฐานะผู้ดูแลระบบอีกครั้ง

usbipd wsl detach --busid <busid>

มีทางเลือกอื่นของ GUI หรือไม่?

ในกรณีที่อินเทอร์เฟซบรรทัดคำสั่งไม่ใช่มือขวาของคุณ คุณสามารถให้ wsl-usb-gui ลอง. มันเป็นตัวห่อหุ้ม GUI ที่ไม่เป็นทางการรอบไบนารี usbipd-win ซึ่งช่วยลดความยุ่งยากในรายการอุปกรณ์ USB และการทำงานร่วมกันระหว่างระบบปฏิบัติการโฮสต์และอินสแตนซ์ WSL

  1. ตรวจสอบให้แน่ใจว่าได้ติดตั้ง usbipd-win เวอร์ชันล่าสุดแล้ว และเคอร์เนล WSL เป็นเวอร์ชันล่าสุด
  2. ดาวน์โหลดตัวติดตั้งล่าสุดของ wsl-usb-gui จากหน้าเผยแพร่ GitLab ของโครงการ.
  3. เรียกใช้ไฟล์ MSI ที่คุณดาวน์โหลด
    • ก่อนติดตั้งโปรแกรม ตัวติดตั้งจะตรวจสอบข้อกำหนดเบื้องต้นและพยายามตั้งค่าหากจำเป็น อย่างไรก็ตาม จะเป็นการดีกว่าถ้าคุณอัปเดตทุกอย่างด้วยตัวเองเพื่อหลีกเลี่ยงปัญหาความเข้ากันได้ที่คาดไม่ถึง
  4. เมื่อติดตั้งสำเร็จ คุณควรจะพบทางลัดที่สร้างขึ้นใหม่ซึ่งมีชื่อว่า WSL ยูเอสบี ในเมนูเริ่ม เรียกใช้แอพจากที่นั่น
  5. คลิกที่ รีเฟรช ปุ่มเพื่อเติมรายการอุปกรณ์ USB ที่เชื่อมต่อกับระบบปฏิบัติการโฮสต์
  6. ใช้ แนบ และ แยกออก ปุ่มเพื่อปลดปล่อยศักยภาพของ USB pass-through ได้อย่างเต็มที่

จากนี้ไป คุณก็พร้อมที่จะออกไปปรับแต่งอุปกรณ์ USB ทั้งหมดที่คุณต้องการใน WSL คำแนะนำฉบับสมบูรณ์ของเราจะช่วยคุณในระหว่างทาง แต่เมื่อตั้งค่าการส่งผ่าน USB ตามที่คุณต้องการแล้ว มันก็จะจางหายไปในพื้นหลัง หากต้องการเรียนรู้เพิ่มเติม ลองดูที่ เอกสารอย่างเป็นทางการของ Microsoft เกี่ยวกับการเชื่อมต่ออุปกรณ์ USB ภายใต้ WSL และ ส่วน GitHub Wiki ของ usbipd-win.

ขอบคุณสมาชิกอาวุโส XDA Some_Random_ชื่อผู้ใช้ สำหรับเคล็ดลับ!