USB Ethernet Adapter Tidak Terdeteksi Di Raspberry Pi OS
Pada suatu hari, saya menggunakan sebuah papan Raspberry Pi untuk dijadikan sebagai perangkat jaringan seperti router, IDS, firewall, VPN gateway dan sebagainya. Seperti perangkat jaringan lain pada umumnya, saya membutuhkan dua port RJ45 yang berbeda: satu untuk masukan yang dihubungkan ke switch dan satu lagi untuk keluaran yang dihubungkan ke Internet. Karena Raspberry Pi hanya memiliki sebuah port RJ45, saya terpaksa menggunakan USB Ethernet Adapter untuk menambahkan sebuah port RJ45 baru lewat USB 3. Semua berjalan sesuai dengan harapan dan lancar hingga suatu hari perangkat Raspberry Pi tersebut restart akibat pemadaman listrik. Sejak itu, perangkat USB Ethernet Adapter tersebut tiba-tiba tidak terdeteksi lagi. Bila saya memasang ulang perangkat ke port USB yang berbeda, perangkat akan kembali terdeteksi. Namun saya tidak bisa selalu melakukan ini setiap kali restart karena saya tidak selalu berada di lokasi fisik yang sama.
Langkah pertama yang saya melakukan untuk melakukan troubleshooting perangkat USB adalah dengan menjalankan perintah lsusb
.
Sebagai contoh, saya mengetikkan perintah seperti berikut ini:
Satu hal yang menarik perhatian saya pada hasil di atas adalah perangkat di Bus 02.Port 1
dengan nilai Class
berupa
Mass Storage
dan Driver
berupa usb-storage
. Bila saya menampilkan informasi khusus untuk perangkat tersebut (berdasarkan
nomor bus dan nomor perangkat), saya menemukan hasil seperti berikut ini:
Bila dilihat dari nilai vendor id 2357
, ini adalah benar produsen USB Ethernet adapter yang saya pakai. Namun kenapa terdeteksi
sebagai mass storage? Untuk mendapatkan informasi yang lebih detail, saya dapat menambahkan -v
pada perintah lsusb
seperti
berikut ini:
SCSI merupakan standard yang sudah tidak populer lagi di dunia PC (Personal Computer atau komputer pribadi) dimana SCSI
digantikan oleh IDE yang selanjutnya diteruskan oleh SATA sebagai interface paling populer untuk media penyimpanan saat ini. Untuk
melihat nama perangkat penyimpan SCSI, saya bisa menggunakan perintah lsblk
seperti berikut ini:
Hasil perintah di atas menunjukkan bahwa perangkat penyimpanan ini ada di /dev/sr0
. Untuk melihat isinya, saya bisa menggunakan
perintah seperti berikut ini:
Setelah ini, untuk mendapatkan daftar file, saya akan memberikan perintah seperti berikut ini:
Sepertinya media penyimpanan ini berisi driver untuk sistem operasi Windows yang perlu di-install sebelum perangkat bisa dipakai. Tetapi
saya tidak perlu melakukan ini di Linux. Untuk membuat perangkat ini kembali terdeteksi sebagai perangkat jaringan,
saya dapat menggunakan perintah usbreset
seperti berikut ini:
Sekarang bila saya memberikan perintah lsusb
, saya akan menemukan perangkat tersebut memiliki nomor produk yang berbeda dari
sebelumnya, seperti yang terlihat pada hasil eksekusi perintah berikut ini:
Sekarang, perangkat sudah terdeteksi sebagai perangkat ethernet dimana saya bisa memakainya sebagai eth1
. Ini adalah apa
yang saya harapkan. Walaupun demikian, bila saya men-restart Raspberry Pi yang saya pakai, perangkat ethernet ini akan
kembali hilang dan berubah menjadi mass storage. Bagaimana caranya supaya perubahan ini permanen?
Solusi yang paling cepat terpikirkan adalah dengan menjalankan usbreset
secara otomatis melalui script saat Raspberry Pi
dinyalakan. Namun, setelah melakukan penelusuran lebih lanjut, saya menemukan solusi yang lebih sederhana. Berdasarkan
informasi yang ada di https://github.com/raspberrypi/rpi-eeprom/issues/472, beberapa pengguna yang mengalami hal ini melaporkan
hasil yang baik bila NET_INSTALL_ENABLED=0
ditambahkan pada file konfigurasi yang dipakai oleh bootloader di EEPROM.
Untuk melakukan perubahan pada file konfigurasi EEPROM, saya dapat menggunakan perintah rpi-eeprom-config
seperti berikut ini:
Setelah itu akan muncul text editor dimana saya akan menambahkan sebuah baris baru dengan nilai NET_INSTALL_ENABLED=0
sehingga
isinya menjadi seperti:
Setelah menyimpan perubahan file tersebut dan memberikan perintah reboot
untuk menjalankan ulang Raspberry Pi OS, saya
menemukan bahwa perangkat USB Ethernet Adapter yang saya pakai kini dapat terdeteksi secara otomatis sebagai perangkat jaringan, bukan
lagi sebagai mass storage.