Meneruskan port USB dari Windows 10 untuk pekerjaan jarak jauh

Ketika seseorang telah menggali bunker selama bertahun-tahun dan menyimpan makanan di sana, ia harus mengalami kepuasan moral yang mendalam jika bunker diperlukan. Dia akan senang mengatakan: "Dan aku berkata-dan-dan-il!" Hal yang sama berlaku untuk mereka yang menimbun makanan di dapur, ketika semua orang dibeli di toko hanya untuk hari ini. Tetapi dengan kompleks kerja jarak jauh Redd kami, saya tidak merasa ingin bersuka ria. Itu dirancang untuk keterpencilan di masa damai. Dan itu digunakan jauh sebelum berita pertama dari Tiongkok.

Untuk waktu yang lama saya tidak menulis apapun tentang dia. Proyek-proyek lain mengganggu, dan minat, dilihat dari peringkat artikel terakhir yang diterbitkan, telah jatuh. Dibutuhkan banyak upaya untuk menyiapkan artikel, dan masuk akal untuk melakukannya hanya jika dibutuhkan oleh pembaca yang cukup.

Tetapi karena semua orang ada di bibir sekarang, ada keinginan untuk berbagi satu hal yang dapat membantu seseorang. Ini bukan pengembangan kami, saya melakukan penelitian sebagai bagian dari pekerjaan pada pekerjaan jarak jauh dengan papan debug All-Hardware. Di sini saya akan menjelaskan hasil mereka sekarang. Proyek USB / IP dikenal banyak orang. Tapi itu sudah lama dibatasi oleh penulis. Driver terbaru berada di bawah Win7. Hari ini saya akan menjelaskan tempat untuk mengunduh opsi untuk WIN10, dan menunjukkan bagaimana saya mengujinya. Selain itu, pengembang analog modern memastikan bahwa mereka membuat tidak hanya klien Windows, tetapi juga server Windows (meskipun saya tidak melakukan pengujian dalam mode ini: tugas tidak mengharuskan itu). Tetapi bagi seseorang ini mungkin juga berguna.




pengantar


Pertama, cerita pendek tentang apa itu USB / IP. Ini adalah serangkaian program yang memungkinkan Anda untuk meneruskan perangkat USB melalui jaringan. Perangkat itu sendiri terhubung ke server. Klien terletak di komputer lain. Pada saat yang sama, ada aplikasi pada mesin klien yang sama sekali tidak dirancang untuk bekerja dengan jaringan. Ia menginginkan perangkat USB nyata. Dan ia menerima informasi bahwa perangkat ini terhubung. Driver standar diinstal pada perangkat ini. Secara umum, klien percaya bahwa itu bekerja dengan perangkat USB lokal.

Seseorang melempar kunci keamanan. Kami memeriksa kemungkinan akses jarak jauh ke adaptor JTAG.

Proyek USB / IP secara aktif berkembang hingga 2013. Kemudian cabang Windows berhenti. Secara umum, bahkan biner yang ditandatangani dirilissopir. Tapi itu di bawah Windows 7. Cabang Linux melanjutkan pengembangannya, dan layanan ini dibangun ke dalam sistem operasi itu sendiri. Paling tidak, itu pasti dibangun ke dalam bangunan Debian. Selain itu, untuk Linux ada klien dan server, dan untuk Windows, hanya klien yang awalnya dibuat. Server di bawah Windows tidak dibuat.

Ada artikel yang sangat bagus tentang Habrรฉ , yang dapat digunakan baik sebagai referensi untuk bekerja dengan layanan ini, dan sebagai tip tentang bekerja dengannya.

Opsi untuk versi Windows saat ini


Tapi betapapun bagusnya Windows 7, itu sudah mati. Sebagai bagian dari pekerjaan pada All-Hardware, kami mempertimbangkan berbagai opsi untuk menyelesaikan salah satu masalah, dan kami hanya perlu memeriksa sejumlah alternatif berdasarkan "fit - not fit". Tidak mungkin menghabiskan banyak waktu untuk memeriksa. Dan perubahan driver di bawah Windows 10 bisa menyeret dirinya sendiri. Oleh karena itu, pencarian dilakukan pada jaringan, yang membawa usbip-win ke proyek . Pada saat penemuannya, versi baru bertanggal 23 Februari 2020, yaitu, proyek tersebut ditayangkan. Itu dapat dibangun di bawah WIN7 dan WIN10. Selain itu, tidak seperti proyek aslinya, tidak hanya klien Windows, tetapi juga server Windows dapat dibangun.

Saya memeriksa, proyek sudah dirakit dan dipasang dengan sempurna, jadi pekerjaan lebih lanjut dilakukan dengannya. Dalam file readme Ada tautan ke kode biner siap pakai untuk mereka yang tidak ingin membuatnya sendiri.

Bagian yang menyedihkan dari pengecekan: sisi server


Pertama, saya akan memberi tahu Anda bagaimana verifikasi dilakukan sebagai bagian dari proyek kami. Itu tidak berakhir dengan baik di sana. Kami memeriksa adaptor ST-LINK yang terinstal pada komplek Redd, karena saya telah mencatat bahwa komplek tersebut menggunakan OS Linux dari rakitan Debian, dan rakitan ini berisi layanan USB / IP bawaan.

Menurut artikel tersebut, instal layanan:

sudo apt-get update 
sudo apt-get upgrade 
sudo apt-get install usbip

Sisa artikel merinci cara mengotomatiskan proses memuat layanan. Ketika saya mengerti Linux, saya sudah menulis berkali-kali. Pandai berbicara. Saya tidak punya kebiasaan mengutip teks orang lain dengan wajah pintar, kurang memahami esensi. Oleh karena itu, saya akan mengingat kembali tautan ke artikel yang luar biasa , di mana semuanya diceritakan, dan saya akan menunjukkan kepada diri sendiri apa yang saya lakukan pada setiap OS dimulai (untungnya, semuanya hanya diperlukan untuk verifikasi):

sudo modprobe usbip-core
sudo modprobe usbip-host
sudo usbipd -D

Tujuan dua mantra pertama di atas tidak diketahui oleh saya, tetapi tanpa mereka tidak ada direktori yang dibuat, dan tanpa direktori ini maka tidak akan ada ekspor port USB. Direktori dibuat hanya sampai sistem dihidupkan ulang. Jadi, Anda harus membuatnya setiap waktu. Baris ketiga - semuanya lebih jelas dengan itu, ia memulai layanan.

Sekarang kita melihat nama perangkat:

user@redd:~$ sudo usbip list -l
- busid 1-3 (046d:082d)
   Logitech, Inc. : HD Pro Webcam C920 (046d:082d)

 - busid 1-4 (1366:0101)
   SEGGER : J-Link PLUS (1366:0101)

 - busid 1-5.1 (067b:2303)
   Prolific Technology, Inc. : PL2303 Serial Port (067b:2303)

 - busid 1-5.4.1.1 (0483:5740)
   STMicroelectronics : STM32F407 (0483:5740)

 - busid 1-5.4.1.3 (0483:3748)
   STMicroelectronics : ST-LINK/V2 (0483:3748)
<...>

Ternyata kita membutuhkan perangkat dan busid sama dengan 1-5.4.1.3.

Kami memberikan perintah:

sudo usbip bind --busid=1-5.4.1.3

Semuanya, server siap bekerja.

Bagian yang menyedihkan dari cek: bagian klien


Kami menginstal driver pada Windows (kami melakukan ini hanya sekali, maka itu akan selalu diinstal). Untuk melakukan ini, jalankan file usbip.exe dengan argumen install :

install usbip.exe sebagai administrator.

Sekarang kita lihat apakah perangkat tersedia untuk kita:

usbip.exe list --remote=192.168.10.123

Kami memastikan itu ada dalam daftar. Nah, dan hubungkan:

usbip.exe attach --remote=192.168.10.123 --busid=1-5.4.1.3

Perangkat USB baru muncul di manajer perangkat, Keil melihatnya dengan sempurna ...

Tapi di sinilah akhir yang menyenangkan. Sebuah program kecil dituangkan ke dalam flash drive selama sekitar satu menit. Upaya untuk melewati garis berjalan dari 5 hingga 20 detik per baris. Ini tidak bisa diterima. Selama jeda, lalu lintas sekitar 50 kilobit per detik berjalan di kedua arah. Berjalan lama dan berpikir.

Jujur, batas waktu hanya membuat saya menebak mengapa semuanya begitu buruk. Saya menduga bahwa ada lalu lintas JTAG yang berjalan melalui jaringan. Dan dia menjalankan paket kecil di kedua arah, maka masalahnya. Jadi penelitian ini selesai dengan hasil: "Tidak cocok untuk proyek."

Bagian yang menyenangkan: persiapan


Bahkan kemudian, terlintas di benak saya bahwa dari sudut mata saya, saya melihat bahwa dalam adaptor USB CMSIS DAP JTAG digunakan untuk mengirim lalu lintas JTAG tidak murni, tetapi perintah. JTAG-traffic itu sendiri sudah terbentuk di dalam adaptor. Saya sudah lama ingin memeriksanya, tetapi semua tangan saya tidak menjangkau. Pemindahan massal ke situs jarak jauh memaksanya melakukan (masalah muncul). Apa itu DMS CMSIS? Ini adalah adaptor JTAG yang direkomendasikan oleh ARM untuk pengontrol Cortex-M. Kode sumber untuk berbagai pengontrol diposting di GitHub, Anda dapat mensolder adaptor berdasarkan salah satunya. Sekarang saya akan memberikan tautan ke klon proyek yang disesuaikan dengan papan tempat tidur Blue Pill: https://github.com/x893/CMSIS-DAP , tetapi mesin pencari juga dapat menampilkan akun ARM resmi.

Agar tidak menghabiskan seluruh PC di server, untuk verifikasi, saya membuat semacam kompleks Yelloww (murni oleh warna plastik dari mana kasing dibuat):



Peran server dimainkan oleh Raspberry Pi dengan OS Raspbian yang terinstal (ini adalah Debian yang sama, yang berarti bahwa ada server yang diperlukan ) Salah satu pil biru bertindak sebagai adaptor DMS CMSIS, yang kedua sebagai perangkat yang di-debug.

Kami mengatur dan mengkonfigurasi layanan dengan cara yang sama. Kecuali di sini daftar perangkat yang diizinkan untuk ekspor jauh lebih sederhana:

pi@raspberrypi:~ $ sudo usbip list -l
 - busid 1-1.1 (0424:ec00)
   Standard Microsystems Corp. : SMSC9512/9514 Fast Ethernet Adapter (0424:ec00)

 - busid 1-1.4 (c251:f001)
   Keil Software, Inc. : unknown product (c251:f001)

Jelas bahwa di sini kita mengekspor dan mengimpor perangkat busid = 1-1.4.

Dan di sini khusus dengan CMSIS DAP bahwa saya secara berkala memiliki masalah kecil. Dalam manajer perangkat, saya melihat gangguan seperti itu:



Biarkan saya mengingatkan Anda bahwa artikel itu ditulis pada prinsip "Lebih baik tidak buruk, tapi hari ini lebih dari ideal, tapi besok." Masalah kerja jarak jauh sedang muncul saat ini. Saya berharap bahwa di masa mendatang mereka tidak lagi relevan. Sementara itu, mereka relevan - saya menunjukkan bagaimana saya melewati masalah ini secara manual. Pertama saya mematikan perangkat:



Kemudian segera hidupkan:



Dan itu mulai bekerja tanpa masalah. Di Keil kita mengubah debugger ke CMSIS DAP:



Dan ini dia:



Saat bekerja di jaringan lokal, semuanya terbang begitu saja. Tetapi jelas bahwa tidak ada yang tertarik pada jaringan lokal. Saya mencoba untuk meneruskan port perangkat di rumah, dan kemudian login ke mesin di tempat kerja dan rute "firmware" dari sana. Koneksi di penyedia rumah saya sangat, sangat lambat, terutama - dari saya di luar. Pengontrol di-flash sekitar tiga kali lebih lambat daripada saat terhubung langsung ke USB. Menelusuri ... Ya, sekitar satu detik per baris, tepatnya tidak lebih. Secara umum, tertahankan. Dengan penyedia yang baik, saya harap ini akan menjadi lebih baik.

Kesimpulan


Proyek usbip-win adalah pengganti modern untuk proyek USB / IP. Dia hidup dan berkembang. Pada saat yang sama, ia tidak hanya menyediakan fungsi klien untuk Windows, tetapi juga fungsi server. Kompatibilitas dengan versi Linux disimpan.

Stabilitas perangkat USB jarak jauh sangat luar biasa. Saya yakin bahwa timeout akan terjadi. Mungkin mereka akan muncul di suatu tempat, tetapi untuk adaptor JTAG, tidak ada kegagalan tunggal. Sayangnya, tidak semua perangkat USB dapat diteruskan melalui jaringan karena rendahnya kecepatan sistem yang dihasilkan. Tetapi dalam kasus adaptor JTAG, Anda dapat mempertimbangkan hal-hal alternatif. Secara khusus, CMSIS-DAP bukannya ST-LINK.

Kedua proyek yang ditinjau (usbip-win dan CMSIS-DAP) dapat diunduh dari GitHub dalam bentuk kode sumber.

Jika ini membantu seseorang mengatur akses jarak jauh ke peralatan, saya akan senang. Menggunakan Raspberry Pi akan memungkinkan Anda menjatuhkan peralatan di tempat yang sewenang-wenang.

All Articles