NOTE: this guide is obsolete, a working driver is now included in the Linux kernel tree (since Linux 2.6.31)
A USB to powerline bridge is a network device that instead of using an ordinary Ethernet cable (CAT5 for example) or wireless LAN it uses the powerlines as a network to communicate with similar devices. A more comprehensive explanation of what it is and how it works you can find here: https://en.wikipedia.org/wiki/IEEE_1901.
Known products that use the Intellon 51x1 chipset:
- MicroLink dLAN USB
- "Digitus network"
- Intellon USB Ethernet powerline adapter
- Lots of other USB-powerline adapters...
To check if your device is supported:
$ lsusb | grep -i 09e1 Bus 001 Device 003: ID 09e1:5121 Intellon Corp.
If the vendor (09e1) and product (5121) ID match then it's probably supported.
Get drivers from the official site: http://www.devolo.co.uk/consumer/downloads-44-microlink-dlan-usb.html?l=en or mirrored here. The drivers from the official site were/are more up-to-date.
$ tar -xzvf dLAN-linux-package-v4.tar.gz
Go to the extracted directory and compile them:
$ ./configure $ make
Depending on the errors you got you might need to download and apply my patch:
$ cd dLAN-linux-package-v4/ (or other path to the source code) $ patch < int51x1.patch
$ ./configure $ make
If that failed try:
$ ./configure $ KBUILD_NOPEDANTIC=1 make
If that went OK install the drivers (as root):
# make install
Check if the "devolo_usb" module is loaded:
$ lsmod | grep -i devolo_usb
If it shows up then it's loaded. Now check if the interface is added:
$ ifconfig -a | grep -i dlanusb dlanusb0 Link encap:Ethernet HWaddr 00:12:34:56:78:9A
It is assumed you use a static IP, otherwise you can just use your DHCP client to get an unused IP address from your DHCP server. Setting up the interface is done like this (change the IP address and netmask accordingly if it's different):
# ifconfig dlanusb0 192.168.2.12 netmask 255.255.255.0
Checking if the network works
Try to ping an IP address on your network to test for a working connection:
$ ping 192.168.2.1 PING 192.168.2.1 (192.168.2.1) 56(84) bytes of data. 64 bytes from 192.168.2.1: icmp_seq=1 ttl=30 time=2.49 ms 64 bytes from 192.168.2.1: icmp_seq=2 ttl=30 time=3.37 ms 64 bytes from 192.168.2.1: icmp_seq=3 ttl=30 time=2.80 ms --- 192.168.2.1 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2005ms rtt min/avg/max/mdev = 2.497/2.891/3.374/0.368 ms
You can now set up a network connection like you normally do with any Ethernet device. The route can be added like this for example:
# route add -net 0.0.0.0 netmask 0.0.0.0 gw 192.168.2.1 dlanusb0
Change the IP address of your local gateway accordingly. Also make sure your nameserver is set in /etc/resolv.conf, something like:
Test your internet connection by doing for example:
$ ping codemadness.org PING codemadness.org (126.96.36.199) 56(84) bytes of data. 64 bytes from acmkoieeei.gs02.gridserver.com (188.8.131.52): icmp_seq=1 ttl=52 time=156 ms 64 bytes from acmkoieeei.gs02.gridserver.com (184.108.40.206): icmp_seq=2 ttl=52 time=156 ms 64 bytes from acmkoieeei.gs02.gridserver.com (220.127.116.11): icmp_seq=3 ttl=52 time=155 ms --- codemadness.org ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 1999ms rtt min/avg/max/mdev = 155.986/156.312/156.731/0.552 ms
If this command failed you probably have not setup your DNS/gateway properly. If it worked then good for you :)