Arkadaşlar merhaba, bu yazımda Windows 11 üzerinde WSL2 kullanarak USB Seri Kanal dönüştürücüler ile nasıl çalışabileceğinizi aktaracağım. Cihazınızda fiziksel bir seri kanal cihazı var ise sürücü kurulum adımlarını atlayabilirsiniz.
Çok zor bir iş olmasa da, gerekli olunca ilgili adımları bir araya getirmek külfetli olabiliyor. Bu yazımda gerekli birçok adımı bir araya getirmiş olacağım. Bu vesile ile de özellikle gömülü yazılım geliştiricileri ya da bir şekilde seri kanal ile yolları kesişen ve windows üzerinde linux ile yazılım geliştirmek isteyen takipçilerimize yardımcı olmasını umuyorum. Haydi başlayalım.
Öncelikle USB seri kanal dönüştürücüye yönelik sürücüyü kurmamız gerekiyor. Eğer aşağıdaki gibi bir seri kanal dönüştürücü kullanıyorsanız:
Çok dolaşmadan https://www.prolific.com.tw/UserFiles/files/PL23XX-M_LogoDriver_Setup_4400.zip adresinden ilgili sürücüyü indirip kurabilirsiniz.
Sürücüyü kurduktan sonra, aygıt yöneticisinde, ilgili portların geldiğini kontrol edelim lütfen:
Şimdi sıra geldi bu portu WSL üzerinde kullanmak. Bunun için de https://learn.microsoft.com/en-us/windows/wsl/connect-usb sayfasındaki adımları izliyoruz. Özetle:
- Öncelikle WSL kernel sürümünü kontrol edelim ve 5.10.60.1’den sonra bir sürüm olduğunu kontrol edelim
- “uname -a” komutu ile bunu görebilirsiniz
- Eğer daha düşük bir komut ise aşağıdaki komutlar ile WSL’i güncelleyelim
- “wsl –shutdown”
- “wsl –update”
- https://github.com/dorssel/usbipd-win/releases sayfasına gidelim ve releases altındaki .msi uzantılı kurulum dosyalarından sisteminize uygun olanı indirelim ve kuralım:
-
- Bu servis (USBIP Device Host) , Windows makinenize bağlanan USB cihazlarını, WSL2 dahil diğer makineler ile paylaşmanıza olanak sağlar,
-
- Şimdi WSL’i komut satırında açalım,
- Aşağıdaki adımları uygularken WSL’in açık olduğundan emin olalım,
- USB cihazını bağlayalım,
- Windows tarafında yönetici hakları ile PowerShell’i açalım ve aşağıdaki komutu çağıralım:
- “usbipd list”
- Benim bilgisayarımda aşağıdaki çıktıları alıyorum:
-
- Sizdeki listede USB-SERIAL cihazı Shared durumda olmayabilir,
- Buradaki BUSID sütunu altındaki numarayı not ediyoruz (yukarıda “2-1”),
-
- Cihazı paylaşmak için aşağıdaki komutu çağırıyoruz:
- usbipd bind –busid 2-1
- Bunun bir kere yapmanız yeterli.
- Şimdi de cihazı WSL’e bağlamak için aşağıdaki komutu çağırıyoruz:
- usbipd attach –wsl –busid 2-1
- NOT: Bu komut sonrasında artık bu USB’yi windows tarafında kullanamıyor olacaksınız
- Bu komut her bilgisayarı kapatıp açtığınızda yapmanız gerekiyor
- Bu komut sonrasında aşağıdaki gibi bir çıktı görüyor olacaksınız:
-
123usbipd: info: Using WSL distribution 'Ubuntu-24.04' to attach; the device will be available in all WSL 2 distributions.usbipd: info: Detected networking mode 'nat'.usbipd: info: Using IP address 172.21.96.1 to reach the host.
- Şimdi WSL tarafında ilgili cihaz gelmiş mi bakalım. Bunun için aşağıdaki komutu çağıralım:
- lsusb
-
1234❯ lsusbBus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hubBus 001 Device 002: ID 1a86:7523 QinHeng Electronics CH340 serial converterBus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
- Burada ikinci satırdaki cihaz bizim cihazımı artık, Linux tarafında bu cihazı kullanabileceksiniz.
- İşiniz bittiğinde, tekrar windows tarafında USB’yi kullanabilmek için, komut satırında aşağıdaki komutu çağırabilirsiniz:
- usbipd detach –busid 2-1
İlgili seri kanal sürücüsünü görüntülemek için aşağıdaki yöntemleri izleyebilirsiniz:
- dmesg kullanarak, aşağıdaki komutu çağırarak:
- dmesg | grep tty
- Bu komutun benim makinemdeki çıktısı:
- [ 730.741626] usb 1-1: ch341-uart converter now attached to ttyUSB0
- Buradaki ttyUSB0, bizim seri kanal portumuz
- Bir diğer yöntem ise /dev/ altındaki cihazlara bakarak:
- ls -l /dev/ttyS*
- Bu komutun benim makinemdeki çıktısı:
-
12❯ ls -l /dev/ttyUSB*rw-rw---- 1 root dialout 0 B Sun Apr 27 23:39:18 2025 /dev/ttyUSB0
-
Şimdi de gelelim, seri kanalı hızlıca denemeye. Bunu yapmak için aşağıdaki pin-out’a göre 2 ve 3 no’lu pini bağlayalım ve “loopback” yapalım.
Peki pin’leri bağladıktan sonra ne yapacağız? Öncelikli olarak, minicom uygulaması kurulu değil ise bunu kuralım:
- sudo apt install minicom
- Kurulum sonrasında aşağıdaki komutu çağırarak uygulamayı çalıştıralım:
- sudo minicom -D /dev/ttyUSB0
- Komut sonrasında aşağıdaki gibi bir ekran görüyor olacaksınız:
-
123456Welcome to minicom 2.9OPTIONS: I18nPort /dev/ttyUSB0, 23:39:18Press CTRL-A Z for help on special keys
-
- Bu ekrandayken klavyeye yazdıklarınızı görebiliyorsanız. Her şey yolundadır demektir:
-
12345678Welcome to minicom 2.9OPTIONS: I18nPort /dev/ttyUSB0, 23:55:20Press CTRL-A Z for help on special keysMerhaba dünya
-
- Minicom aracına yönelik komutlar için önce Ctrl+A ve sonra Z’ye basabilirsiniz,
- Ctrl+A sonra C ile ekranı temizleyebilirsiniz.
Son olarak windows’ta loopback testi yapmak için:
- Öncelikle USB cihazını WSL’den koparıyoruz (yukarıda komutu ekledim),
- Putty’den seri kanal konfigürasyonunu seçiyoruz ve Open’a tıklıyoruz:
-
- Benzer şekilde yazdıklarınız görüyorsanız, loopback başarılı olmuştur:
-
Evet sevgili yazılımperver dostlarım, bu yazımda da WSL ve seri kanala yönelik bir konuya değinmiş olduk. Bir sonraki yazımda görüşmek dileğiyle bol kodlu günler 🙂
Kaynaklar
- https://devblogs.microsoft.com/commandline/connecting-usb-devices-to-wsl/#how-it-works
- https://github.com/dorssel/usbipd-win/releases
- https://learn.microsoft.com/en-us/windows/wsl/connect-usb