Mengaktifkan Dukungan Android USB Tethering dengan Host Linux


Pernahkah mencoba menggunakan fitur Android USB Tethering namun komputer host yang menggunakan kernel Linux tidak mengenalinya? Jika ya, tulisan ini akan membantu kamu agar komputer host dapat mengenalinya!

Cara ini sudah dicoba pada embedded device yang menggunakan Freescale i.MX6UL dengan sistem operasi LTIB.

Agar dapat menggunakan fasilitas USB Tethering dari Android, dibutuhkan driver yang bernama RNDIS host. Hal ini dikarenakan fasilitas USB Tethering dari Android menggunakan driver yang dinamakan RNDIS. Sayangnya, driver ini secara asali (default) dimatikan pada kernel yang digunakan oleh LTIB.

Yah, padahal udah bilang bisa langsung pake. πŸ˜”

Tenang, caranya sederhana kok πŸ˜ŠπŸ‘. Bisa dilihat disini, atau lanjutkan baca untuk tulisan berbahasa Indonesia 😊.

Buka Terminal, dan pastikan kamu berada di direktori yang berisi kernel yang digunakan. Misalnya kernelnya ada di ~/Dokumen/linux-3.14.38, pastikan kamu sedang berada di direktori tersebut. Selanjutnya, jalankan make menuconfig. Kira-kira seperti dibawah lah

$ pwd
/home/refa/Dokumen/linux-3.14.38
(username sesuai dengan username kamu)

$ make menuconfig

Setelah itu, akan muncul tampilan seperti gambar dibawah. Masuk ke bagian seperti dibawah (untuk kernel 4.4.6-gentoo (tulisan (iya, sumbernya dari Gentoo Wiki)) 3.14.38 (gambar). Yang lain menyesuaikan), dan pastikan disebelah kiri RNDIS Host terdapat huruf M yang berarti modul untuk RNDIS Host akan dimuat secara manual. Hal ini untuk memastikan modul yang akan dikompilasi merupakan modul yang tepat.

Device Drivers --->
    [*] Network device support --->
        <M> USB Network Adapters --->
            <M> Multi-purpose USB Networking Framework
                <M>  CDC Ethernet support (smart devices such as cable modems)
                <M>  CDC EEM support
		<M>  Host for RNDIS and ActiveSync devices
                <M>  Simple USB Network Links (CDC Ethernet subset)
                     [*] Embedded ARM Linux links (iPaq, ...)

Tampilan di menuconfig

Setelah itu, keluar, dan lakukan kompilasi kernel dan modul dengan menjalankan perintah dibawah.

$ make zImage
$ make modules

Perintah diatas menghasilkan zImage dari kernel dan modul yang berada di direktori drivers/net/usb/rndis_host.ko dan siap untuk dimasukkan kedalam embedded device! 😊 (Kalau buat di komputer, ya udah ada di komputer πŸ‘).

Udah beres nih? Bisa nih?

Kalo cuma dimasukin doang mah ya belum beres πŸ˜‚. Sekarang kita pasang kernel dan muat modulnya dengan menggunakan perintah dibawah. Setelah itu, silakan dicoba tethering 😊.

(sebagai root)
# cp /direktori/menuju/zImage /tempat/zImage/seharusnya/berada/
# insmod /direktori/menuju/rndis_host.ko

Di embedded device i.MX6UL yang saya pake, keluarannya gini nih

root@freescale ~$ insmod /lib/modules/3.14.38-6UL_ga\+ge4944a5/kernel/drivers/ne
t/usb/rndis_host.ko 
[ 21.642101] usbcore: registered new interface driver rndis_host
root@freescale ~$

Saat USB Tethering pada Android diaktifkan, keluarannya gini

[ 78.414842] usb 1-1.1: new high-speed USB device number 4 using ci_hdrc
[ 78.580940] rndis_host 1-1.1:1.0 usb0: register 'rndis_host' at usb-ci_hdrc.1-1.1, RNDIS device, 6a:b9:b3:f5:7b:b4

Kok belum konek sih?

Bisa jadi belum dapet IP. Jalankan perintah dibawah, lalu coba ping ke gateway yang tidak lain dan tidak bukan merupakan perangkat Android itu sendiri. (Perintah dibawah saya jalankan menggunakan akun root karena saya login menggunakan akun itu (default). jika anda bukan root, coba jalankan perintah dibawah. Jika tidak bisa, barulah gunakan akun root).

# ifconfig usb0 192.168.42.200 netmask 255.255.255.0 up
# route add default gw 192.168.42.129
# ping 192.168.42.129

Kok pas di-restart gabisa lagi sih?

Nah, biar gak perlu muat modul secara manual, ada 2 cara sih sebenernya.

Yang pertama :
Pas jalanin menuconfig (yang diatas itu tuh), bagian RNDIS Host jangan dibuat M, tapi Y. Setelah itu, flash kernelnya.

Yang kedua :
Tambahkan perintan diatas ke /etc/rc.d/rc.local agar dimuat setiap kali perangkat dinyalakan. Simpelnya sih, jalanin perintah dibawah.

# echo "insmod /direktori/menuju/rndis_host.ko" >> /etc/rc.d/rc.local
(Pastikan tanda lebih dari (>) ada 2 ya :))

Beres nih?

Iya beres. Mau tambahan yang lain? Nanti yah pan kapan 😁.

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout /  Ubah )

Foto Google+

You are commenting using your Google+ account. Logout /  Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout /  Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout /  Ubah )

Connecting to %s