WSL2 ile Seri Kanal Kullanımı

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:

USB-RS232 Dönüştürücü - CH340

Ç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:
  • Şimdi WSL tarafında ilgili cihaz gelmiş mi bakalım. Bunun için aşağıdaki komutu çağıralım:
    • lsusb
    • 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ı:

      •  

Ş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.

RS232 Pinout and Specifications Guide

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:
  • Bu ekrandayken klavyeye yazdıklarınızı görebiliyorsanız. Her şey yolundadır demektir:
  • 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

 

 

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Bu site, istenmeyenleri azaltmak için Akismet kullanıyor. Yorum verilerinizin nasıl işlendiği hakkında daha fazla bilgi edinin.