Mei 02, 2015

USB Tidak Terdeteksi pada Openwrt

Udah lamak daan nulis, jadi salok.....

Ceritanya tentang TP-link TL-MR3020, dipasang openwrt. Download dan torrent serasa nikmat tak terbayang. Asyik di openwrt, extroot fitur torrent sudah, ddns sudah. DDserver, youtube downloader uploader, dlna server, Custom menu uhttpd, 3g-modem, proxy, wifi extender, honeypot, direct download, samba share, mmpeg audio video converter, (maaf) hack download mp3 deezer, (maaf lagi) trik-trikan internet gratis semua sudah dan lancar jaya di 3g router "mumer" ini.
openwrt mount points
Mount point openwrt
Tapi yang paling asyik dari semuanya tentu torrent. Berbekal usb 32GB satu persatu file pindah ke komputerku. Sebelumnya, jalan berliku ditempuh cuma untuk memindahkan file hasil download dari partisi dengan EXT4, lewat samba share, komputer diinstall ubuntu, lewat virtualbox, atau pakai ext2explore. Intinya mesti harus copy/download lagi file ke komputer padahal cuma ingin nonton video hasil download. Akhirnya partisi dengan EXT4 diubah NTFS, abis download di openwrt tinggal colok di PC lalu langsung nonton. Tapi.... rupanya TL-MR3020 punya kelemahan, suka reboot saat download torrent terutama yang file besar. Dan sesaat setelah reboot, usb tidak terdeteksi. Paksa soft reboot-pun tetap tidak terdeteksi, kecuali kalau hard boot poweroff dan colok lagi power adapternya. Tapi berikut ada solusi.....

Sempat dibuat jengkel, rupanya ini disebabkan 3 partisi usb flashdisk salah satunya NTFS untuk keperluan penyimpanan. Partisi pertama FS NTFS, partisi kedua untuk SWAP, dan yang ketiga EXT4 untuk extroot. Urutan seperti itu karena Windows tidak mau kalau NTFS-nya ditaruh dipartisi selain partisi pertama. Dulu waktu extroot masih di partisi pertama, tidak ada masalah. Barangkali NTFS yang akan di-mount disalah satu direktori pada extroot, padahal extroot-nya sendiri belum mount, entahlah. Berikut kondisi dan solusi yang saya tempuh.

Kondisi normal adalah partisi pertama (/dev/sda1) mount di /mnt/ntfs didalamnya ada direktori downloads, partisi kedua mount swap, partisi ketiga mount di /overlay. Kita akan membuat script autostart untuk memeriksa ketiga partisi tersebut. Reboot jika ntfs gagal di mount.


  • Boot openwrt tanpa usb.
  • Log in melalui ssh .
  • Buat script cekidtxt dengan perintah: touch /etc/init.d/cekidtxt
  • Tambahkan mode executable: chmod +x /etc/init.d/cekidtxt
  • Vi /etc/init.d/cekidtxt, scriptnya adalah:

#!/bin/sh /etc/rc.common
# Cek NTFS mounted di /mnt/ntfs
# Yopibest @2015

START=51
STOP=15

start() {
        echo starting
        if [ -d "/mnt/ntfs/downloads" ]
        then    echo "Tidak akan dijalankan" > /root/hasil.log
        else    if [ `ls /dev | grep -c ttyUSB` -gt "0" ]
                then    echo "Modem Mode" > /root/hasil.log
                else    echo 0 > /sys/devices/virtual/gpio/gpio8/value
                        sleep 2
                        echo 1 > /sys/devices/virtual/gpio/gpio8/value
                        echo "USB telah direset" > /root/hasil.log
                        reboot
                fi
        fi
}

stop() {
        echo "nothing to stop"
}

Catatan:
- START=51 ,
Posisikan script ini setelah fstab (rc.d --> S50) sehingga /mnt/ntfs/downloads normalnya sudah di mount.
- if [ -d "/mnt/ntfs/downloads" ],
Cek keberadaan direktori downloads di /mnt/ntfs. Jika ditemukan, maka script ini bahkan tidak dijalankan :)
- if [ `ls /dev | grep -c ttyUSB` -gt "0" ],
Karena di openwrt ini ada fitur 3g, maka belum tentu kita ingin reboot jika flashdisk dilepas.
- echo 0 > /sys/devices/virtual/gpio/gpio8/value,
Matikan supply power untuk port USB.
- echo 1 > /sys/devices/virtual/gpio/gpio8/value,
Hidupkan supply power untuk port USB.
- sleep 2, ngantuk.
- reboot, ya reboot.

Langkah terakhir adalah menset agar script ini autostart dengan perintah: /etc/init.d/cekidtxt enable
Setelah itu silakan dicoba dan diperiksa file hasil.log. Hanya saja script ini belum di tes pada DDserver (untuk camera DSLR remote).

Tidak ada komentar:

Posting Komentar