Panduan Instalasi Driver Wifi FreeBSD

By | November 28, 2013

Salah satu kendala yang biasa ditemukan dalam dunia opensource adalah masalah driver yang tidak di support secara default oleh vendor pembuat hardware. Contohnya saja, beberapa waktu yang lalu saat menginstall PC-BSD 9.2 pada lenovo Ideapad Z480 yang menggunakan hardware WIFI dengan chipset broadcom 4313 saya mengalami kendala mengaktifkan koneksi WIFI saya.

Untungnya, dunia opensource adalah dunia berbagi dimana setiap orang bisa berkontribusi menyelesaikan masalah yang di alami oleh komunitasnya. Pada beberapa kasus malah orang berlomba-lomba mencari solusi yang cepat dan tepat. Itulah indahnya dunia opensource.

Demikian pula dengan masalah WIFI yang saya ceritakan diatas, secara default memang tidak ada driver khusus untuk sistem FreeBSD 9.2 (PC-BSD 9.2) 64 Bit saya, untungnya bukan saya saja yang mengalami hal tersebut. Dengan mengkombinasikan solusi dari beberapa forum akhirnya WIFI broadcom 4313 bisa digunakan dengan baik.

Berikut langkah-langkah instalasi driver WIFI  chipset broadcom 4313 pada sistem PC-BSD 9.2 64 bit.

Pertama, cek terlebih dahulu jenis chipset/hardware yang ada pada laptop/pc yang a kita gunakan. Caranya dengan menjalankan perintah lspci :

[budhi@pcbsd-1860] /usr/home/budhi/ndisulator-stable9# lspci -v | grep Wireless
04:00.0 Network controller: Broadcom Corporation BCM4313 802.11b/g/n Wireless LAN Controller (rev 01)

Atau dengan menggunakan perintah pciconf  :

[budhi@pcbsd-1860] /usr/home/budhi/ndisulator-stable9# pciconf -lv | grep Wireless
    device     = 'BCM4313 802.11b/g/n Wireless LAN Controller'

Kedua, setelah diketahui jenis chipset/hardware yang digunakan oleh pc/laptop kita langkah selanjutnya adalah dengan menginstall ndisulator. Ndisulator (NDISwrapper) adalah software gratisan  yang bisa digunakan untuk “mengkonversi” driver network  versi Windows XP menjadi driver yang bisa digunakan sistem linux/BSD dengan catatan memiliki sistem  “instruction set architecture” yang di support oleh windows yakni IA-32 dan x86_64.

Sebelum menginstall ndisulator, pastikan terlebih dahulu anda memiliki kernel source tree FreeBSD, cek dengan perintah ls :

[budhi@pcbsd-1860] ~# ls /usr/src
.svn              Makefile.inc1     bin               games             libexec           share
COPYRIGHT         Makefile.mips     cddl              gnu               release           sys
LOCKS             ObsoleteFiles.inc contrib           include           rescue            tools
MAINTAINERS       README            crypto            kerberos5         sbin              usr.bin
Makefile          UPDATING          etc               lib               secure            usr.sbin

Jika tidak, install terlebih dahulu kernel source tree-nya. Kernel source tree dibutuhkan pada saat proses instalasi ndisulator.  Download ndisulator dari situs ini, saya download yang versi zipnya. Extract, kemudian masuk ke direktori hasil extract lalu jalankan perintah berikut untuk menginstallnya :

[budhi@pcbsd-1860] ~# cd /home/budhi/ndisulator-stable9;make;make build;make install

Kemudian pastikan juga bahwa libiconv sudah terinstall :

[budhi@pcbsd-1860] ~# cd /usr/ports/converters/libiconv;make;make install

Ketiga, download driver WIFI versi Windows XP untuk chipset yang sama. Misalnya driver untuk laptop saya (Ideapad Z480) menggunakan chipset broadcom 4313 bisa di download lewat link ini berikut :

[budhi@pcbsd-1860] ~#fetch http://gugus69.free.fr/freebsd/Broadcom_BCM43xx_5.100.235.19_win5x.tgz; tar -xvzf Boadcom_BCM43xx_5.100.235.19_win5x.tgz

Masuk ke directori hasil extractnya, berikut list file hasil extractnya :

[budhi@pcbsd-1860] ~# cd /home/budhi/BCM43xx
[budhi@pcbsd-1860] /home/budhi/BCM43xx# ls
Notes.txt                        bcmwl5.inf                       bcmwlcoi64.dll
SilentInstall_Driver_Only_XP.bat bcmwl5.sys                       setup.exe
bcm43xx.cat                      bcmwl564.sys                     setup.iss
bcm43xx64.cat                    bcmwlcoi.dll

Sebelum melanjutkan ke proses konversi driver dengan menggunakan ndisulator, ada baiknya melakukan backup terlebih dahulu folder “include” yang ada di /usr/src/sys/x86 dan /usr/src/sys/amd64. Pada beberapa tutorial yang saya temukan langkah ini tidak disebut, sepengalaman saya pada saat proses pembuatan driver tersebut saya mendapatkan error yang menyatakan bahwa folder include diatas tidak ditemukan meskipun pada awalnya ada. Jadi untuk kehati2an agar tidak repot-repot harus ambil kernel source tree lagi, sebaiknya backup saja folder include tersebut.

[budhi@pcbsd-1860] ~# cp -Rp /usr/src/sys/amd64/include /usr/src/sys/amd64/include.bak
[budhi@pcbsd-1860] ~# cp -Rp /usr/src/sys/x86/include /usr/src/sys/x86/include.bak

Keempat, jalankan perintah ndisgen :

ndisgen

Kemudian akan masuk ke menu ndisgen, masukan angka 3 untuk melakukan konversi driver :

==================================================================
        ------------------ Windows(r) driver converter -------------------
        ==================================================================

        This script is designed to guide you through the process
        of converting a Windows(r) binary driver module and .INF
        specification file into a FreeBSD ELF kernel module for use
        with the NDIS compatibility system.

        The following options are available:

        1] Learn about the NDIS compatibility system
        2] Convert individual firmware files
        3] Convert driver
        4] Exit

        Enter your selection here and press return: 3

masukan nama driver .inf nya (bcmwl5.inf) , kemudian tekan enter :

==================================================================
        ------------------ Windows(r) driver converter -------------------
        ==================================================================

                        INF file validation

        A .INF file is most often provided as an ASCII file, however
        files with multilanguage support are provided in Unicode format.
        Please type in the path to your .INF file now.

        > bcmwl5.inf

        This .INF file appears to be Unicode.
        Trying to convert to ASCII...
        Done.

        Press return to continue...

Jika ada peringatan dibawahnya, abaikan saja kemudian tekan enter.

Masukan file .sys yang di minta (bcmwl564.sys atau bcmwl5.sys jika menggunakan sistem 32 bit / i386) :

==================================================================
        ------------------ Windows(r) driver converter -------------------
        ==================================================================

                        Driver file validation

        Now you need to specify the name of the Windows(r) driver .SYS
        file for your device. Note that if you are running FreeBSD/amd64,
        then you must provide a driver that has been compiled for the
        64-bit Windows(r) platform. If a 64-bit driver is not available
        for your device, you must install FreeBSD/i386 and use the
        32-bit driver instead.

        Please type in the path to the Windows(r) driver .SYS file now.

        > bcmwl564.sys

        This .SYS file appears to be in Windows(r) PE format.

        Press return to continue...

Abaikan peringatan dibawahnya, tekan enter

==================================================================
        ------------------ Windows(r) driver converter -------------------
        ==================================================================

                        Driver file conversion

        The script will now try to convert the .INF and .SYS files
        using the ndiscvt(1) utility. This utility can handle most
        .INF files; however, occasionally it can fail to parse some files
        due to subtle syntax issues: the .INF syntax is very complex,
        and the Windows(r) parser will sometimes allow files with small
        syntax errors to be processed correctly which ndiscvt(1) will
        not. If the conversion fails, you may have to edit the .INF
        file by hand to remove the offending lines.

        Press enter to try converting the files now:

Tekan enter, apabila berhasil akan muncul informasi bahwa proses konversi berhasil.

Conversion was successful.
Press enter to continue...

Selanjutnya proses pembuatan module driver

==================================================================
        ------------------ Windows(r) driver converter -------------------
        ==================================================================

                        Kernel module generation

        The script will now try to generate the kernel driver module.
        This is the last step. Once this module is generated, you should
        be able to load it just like any other FreeBSD driver module.

        Press enter to compile the stub module and generate the driver
        module now:

Tekan enter. Copy kan module driver yang sudah terbentuk biasanya dalam bentuk  file .ko ke /boot/modules :

[budhi@pcbsd-1860] /home/budhi/BCM43xx#cp bcmwl564_sys.ko /boot/modules

Selanjutnya tambahkan pada rc.conf baris berikut

kld_list='bcmwl564_sys'
#kld_list='bcmwl5_sys' kalau bukan 64 bit
wlans_ndis0="wlan0"
wpa_supplicant_enable=”YES”
ifconfig_wlan0="WPA SYNCDHCP”

pada file /boot/loader.conf tambahkan baris berikut :

wlan_ccmp_load=”YES”
wlan_tkip_load=”YES”

Terakhir, tambahkan informasi ssid pada /etc/wpa_supplicant.conf

ap_scan=1

network={
ssid=”nama ssid”
psk=”passphrase wpa”
}

Restart FreeBSD anda, kemudian periksa dengan perintah ifconfig. Jika driver terinstall dengan baik, maka akan terdeteksi wlan0 sebagai salah satu interfacenya. Demikian langkah-langkah instalasi driver wifi pada FreeBSD dengan menggunakan driver Windows XP menggunakan ndisgen

Leave a Reply

Your email address will not be published. Required fields are marked *