Devolo dLAN USB Extender

The Devolo dLAN USB Extender is based on the Moschip MCS8140 SoC, runs Linux and serves USB devices over the Power Line interface.

Status

The dLAN USB Extender device is fully supported thanks to a contract work with Devolo AG. Support for this device requires the following:

The third party repository contains the Flashless Boot Utility (foot) and the Qualcomm Atheros/Intellon 6300 firmware for the on-board Power Line Communication chip. Those are binaries, and this are not part of the standard OpenWrt package set due to their.

Building OpenWrt for the dLAN USB Extender

Detailed instructions about how to build OpenWrt from scratch for this device can be found here. The steps involved in building and flashing can be summed up like this:

  • download OpenWrt trunk
  • select Moschip MCS814x target
  • select dLAN USB Extender profile
  • build OpenWrt for this target

Once the build is finished, proceed to install the firmware

Installing OpenWrt

You will first need to flash your existing dLAN USB Extender device with a transitional firmware which is available here. Once this transitionnal has been installed and running, it can now accept specific updates using a file on a USB stick.

Once the build finishes. Prepare a USB stick formatted using FAT and whose label is "autoupdate". To do so, you can do the following

(use fdisk to create a FAT partition)
mkfs.vfat /dev/sdc1
mlabel -i /dev/sdc1 ::autoupdate

Now, copy bin/mcs814x/openwrt-mcs814x-dlan-usb-extender-upgrade-squashfs.bin to /dev/sdc1/autoupdate_image, like this:

mount /dev/sdc1 /mnt/
cp bin/mcs814x/openwrt-mcs814x-dlan-usb-extender-upgrade-squashfs.bin /mnt/autoupdate_image
sync
umount /mnt

Now plug the USB stick in your dLAN USB Extender device, power cycle it, and wait for the update to begin. The update process will make the USB LED blink fast, then slowly for a couple of minutes. Once done, you will see the Power LED becoming solid green, indicating that the device is fully ready.

Hardware

Info

Instruction set: ARM
Vendor: Moschip
Bootloader: U-Boot
System-On-Chip: Moschip MCS8140
CPU @Frq ARM926EJ-S @175MHz
Flash size: 8MB
Flash Chip: ST M29W640GB 8KB block size x 8 bottom boot blocks
64KB block size x 127 main blocks
RAM size: 16MB
RAM Chip: Micron MT48LC4M32B2B5-7:G (FBGA) / SDR-143
Ethernet: 1x (SoC) → Power Line
USB: 1 x 2.0 Host
Power Line: IC: Qualcomm Atheros/Intellon INT6300
RAM: Zentel A3V28S40FTP-G6 / SDR-166
Serial: Yes
JTAG: ?

Photos

Casing

Opening the case

Note: This will void your warranty!

  • To remove the cover:
remove the screw (Torx 10) hidden under the label at the back of casing
with a thin screwdriver push the inner flaps, and carefully separate both parts of the casing

Board

SoC

Serial

Serial console can be found below the PCBA of the device. To solder a serial console device, you must unsolder the two big soldering footprints which provide 110/220V AC current to the PCBA. The test points pinout is the following:

TP10 GND
TP16 Tx
TP15 Rx

(3V3TTL)

Serials console baudrate is : 57600,8n1

Cipher Engine

Cryptographic Hardware Accelerators

The Moschip MCS8140 has some crypto hardware accelerators:

  • AES and DES/3DES hardware encryption and decryption
  • SHA1, SHA256 and MD5 authentication in hardware

Bootlogs

OEM bootlog

U-Boot 1.1.6 (Feb 9 2011 - 15:22:47) U-Boot code: 00E00000 -> 00E2A050 BSS: -> 00E6EAFC IRQ Stack: 00f6faf8 FIQ Stack: 00f70af8 SDRAM size : 16 MB DRAM: 16 MB ## Unknown FLASH on Bank 2 - Size = 0x00000000 = 0 MB Flash: 8 MB Using default environment In: serial Out: serial Err: serial Eth0 address not set. Using default address: 00:0B:3B:00:00:01 Hit any key to stop autoboot: 0 ## Booting image at 1c050000 ... ## Copy image from flash 1c050000 to ram 00007fc0 ... Image Name: Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 934312 Bytes = 912.4 kB Load Address: 00008000 Entry Point: 00008000 Verifying Checksum ... OK OK bootargs is root=/dev/mtdblock4 rootfstype=jffs2 Starting kernel ... Uncompressing Linux.............................................................. done, booting the kernel. Linux version 2.6.15 (mbeckers@devolo-mbeckers) (gcc version 3.4.4) #14 Wed Feb 9 15:24:26 UTC 2011 CPU: ARM926EJ-Sid(wb) [41069264] revision 4 (ARMv5TEJ) Machine: Secure Communication Processor Memory policy: ECC disabled, Data cache writeback CPU0: D VIVT write-back cache CPU0: I cache: 16384 bytes, associativity 4, 32 byte lines, 128 sets CPU0: D cache: 16384 bytes, associativity 4, 32 byte lines, 128 sets Built 1 zonelists Kernel command line: root=/dev/mtdblock4 rootfstype=jffs2 PID hash table entries: 128 (order: 7, 2048 bytes) Dentry cache hash table entries: 4096 (order: 2, 16384 bytes) Inode-cache hash table entries: 2048 (order: 1, 8192 bytes) Memory: 16MB 0MB 0MB 0MB = 16MB total Memory: 14200KB available (1560K code, 348K data, 72K init) Mount-cache hash table entries: 512 CPU: Testing write buffer coherency: ok NET: Registered protocol family 16 usbcore: registered new driver usbfs usbcore: registered new driver hub NetWinder Floating Point Emulator V0.97 (double precision) JFFS2 version 2.2. (C) 2001-2003 Red Hat, Inc. io scheduler noop registered io scheduler deadline registered ttyMCS0 at I/O 0xff0dc000 (irq = 21) is a SCP serial port(16550) RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize MCS8140 MAC eth0 Flash chip probe: 800000 at 1c000000 scp_flash: Found 1 x16 devices at 0x0 in 8-bit bank Amd/Fujitsu Extended Query Table at 0x0040 number of CFI chips: 1 cfi_cmdset_0002: Disabling erase-suspend-program due to code brokenness. cmdlinepart partition parsing not available Using SCP partition definition Creating 6 MTD partitions on "scp_flash": 0x00000000-0x00030000 : "ArmBoot" 0x00030000-0x00040000 : "Config1" 0x00040000-0x00050000 : "Config2" 0x00050000-0x00150000 : "bZimage" 0x00150000-0x00510000 : "UserFS" 0x00050000-0x00510000 : "Combined" NUPORT : Software workaround for EHCI nuport_ehci_hcd nuport_ehci_hcd.0: NUPORT EHCI Host Controller nuport_ehci_hcd nuport_ehci_hcd.0: new USB bus registered, assigned bus number 1 nuport_ehci_hcd nuport_ehci_hcd.0: irq 2, io mem 0x400fc000 nuport_ehci_hcd nuport_ehci_hcd.0: park 3 nuport_ehci_hcd nuport_ehci_hcd.0: USB 2.0 initialized, EHCI 1.00, driver 28 Mar 2006 hub 1-0:1.0: USB hub found hub 1-0:1.0: 4 ports detected Device ID is 0 ohci_hcd ohci_hcd.0: OHCI Host Controller ohci_hcd ohci_hcd.0: new USB bus registered, assigned bus number 2 ohci_hcd ohci_hcd.0: irq 11, io mem 0x400fd000 hub 2-0:1.0: USB hub found hub 2-0:1.0: 2 ports detected Device ID is 1 ohci_hcd ohci_hcd.1: OHCI Host Controller ohci_hcd ohci_hcd.1: new USB bus registered, assigned bus number 3 ohci_hcd ohci_hcd.1: irq 12, io mem 0x400fe000 hub 3-0:1.0: USB hub found hub 3-0:1.0: 2 ports detected NET: Registered protocol family 2 IP route cache hash table entries: 256 (order: -2, 1024 bytes) TCP established hash table entries: 1024 (order: 0, 4096 bytes) TCP bind hash table entries: 1024 (order: 0, 4096 bytes) TCP: Hash tables configured (established 1024 bind 1024) TCP reno registered TCP bic registered NET: Registered protocol family 1 NET: Registered protocol family 17 NET: Registered protocol family 15 VFS: Mounted root (jffs2 filesystem). Freeing init memory: 72K Starting Logging Services : [ OK ] Starting Mounting and checking file systems : [ OK ] Starting Inserting USB/IP Modules : [ OK ] Starting Network : [ OK ] Starting Device Manager : [ OK ] Starting USB/IP Broadcast : [ OK ] Starting USB/IP Daemons : [ OK ] Starting Webserver : [ OK ] Starting POST : [ OK ] Starting FAQ : [ OK ] # cat /proc/cpuinfo Processor : ARM926EJ-Sid(wb) rev 4 (v5l) BogoMIPS : 87.24 Features : swp half thumb fastmult edsp java CPU implementer : 0x41 CPU architecture: 5TEJ CPU variant : 0x0 CPU part : 0x926 CPU revision : 4 Cache type : write-back Cache clean : cp15 c7 ops Cache lockdown : format C Cache format : Harvard I size : 16384 I assoc : 4 I line length : 32 I sets : 128 D size : 16384 D assoc : 4 D line length : 32 D sets : 128 Hardware : Secure Communication Processor Revision : 0000 Serial : 0000000000000000 #

OpenWrt bootlog

U-Boot 1.1.6 (Jul 9 2012 - 09:53:21) U-Boot code: 00E00000 -> 00E2B10C BSS: -> 00E6FBFC IRQ Stack: 00f70bf8 FIQ Stack: 00f71bf8 SDRAM size : 16 MB DRAM: 16 MB ## Unknown FLASH on Bank 2 - Size = 0x00000000 = 0 MB Flash: 8 MB Using default environment In: serial Out: serial Err: serial Eth0 address not set. Using default address: 00:0B:3B:00:00:01 Hit any key to stop autoboot: 0 ### Start autoupdate function via USB ### ### This is USB autoupdate function ### ## Booting image at 1c050000 ... ## Copy image from flash 1c050000 to ram 00007fc0 ... Image Name: ARM OpenWrt Linux-3.3.8 Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 800526 Bytes = 781.8 kB Load Address: 00008000 Entry Point: 00008000 Verifying Checksum ... OK OK bootargs is root=/dev/mtdblock4 rootfstype=jffs2 Starting kernel ... Uncompressing Linux... done, booting the kernel. [ 0.000000] Booting Linux on physical CPU 0 [ 0.000000] Linux version 3.3.8 (dani@tool) (gcc version 4.6.3 20120201 (prerelease) (Linaro GCC 4.6-2012.02) ) #2 Thu Jan 23 14:30:13 CET 2014 [ 0.000000] CPU: ARM926EJ-S [41069264] revision 4 (ARMv5TEJ), cr=00053177 [ 0.000000] CPU: VIVT data cache, VIVT instruction cache [ 0.000000] Machine: Moschip MCS8140 board, model: Devolo dLAN USB Extender [ 0.000000] Memory policy: ECC disabled, Data cache writeback [ 0.000000] CPU frequency: 175000 (kHz) [ 0.000000] SDRAM frequency: 100 (MHz) [ 0.000000] Built 1 zonelists in Zone order, mobility grouping off. Total pages: 4064 [ 0.000000] Kernel command line: earlyprintk mem=16M console=ttyS0,57600 [ 0.000000] PID hash table entries: 64 (order: -4, 256 bytes) [ 0.000000] Dentry cache hash table entries: 2048 (order: 1, 8192 bytes) [ 0.000000] Inode-cache hash table entries: 1024 (order: 0, 4096 bytes) [ 0.000000] Memory: 16MB = 16MB total [ 0.000000] Memory: 13792k/13792k available, 2592k reserved, 0K highmem [ 0.000000] Virtual kernel memory layout: [ 0.000000] vector : 0xffff0000 - 0xffff1000 ( 4 kB) [ 0.000000] fixmap : 0xfff00000 - 0xfffe0000 ( 896 kB) [ 0.000000] vmalloc : 0xc1800000 - 0xff000000 ( 984 MB) [ 0.000000] lowmem : 0xc0000000 - 0xc1000000 ( 16 MB) [ 0.000000] modules : 0xbf000000 - 0xc0000000 ( 16 MB) [ 0.000000] .text : 0xc0008000 - 0xc0206000 (2040 kB) [ 0.000000] .init : 0xc0206000 - 0xc021e000 ( 96 kB) [ 0.000000] .data : 0xc021e000 - 0xc022eb00 ( 67 kB) [ 0.000000] .bss : 0xc022eb24 - 0xc0256e3c ( 161 kB) [ 0.000000] NR_IRQS:32 [ 0.000000] Timer frequency: 50000 (kHz) [ 0.000000] Calibrating delay loop... 86.93 BogoMIPS (lpj=434688) [ 0.090000] pid_max: default: 32768 minimum: 301 [ 0.090000] Mount-cache hash table entries: 512 [ 0.090000] CPU: Testing write buffer coherency: ok [ 0.090000] Setting up static identity map for 0x1c4d18 - 0x1c4d54 [ 0.100000] NET: Registered protocol family 16 [ 0.120000] gpiochip_add: registered GPIOs 236 to 255 on device: 400d0000.gpio [ 0.130000] gpiochip_add: registered GPIOs 232 to 235 on device: 400d4000.gpio [ 0.150000] CPU mode: External MII [ 0.180000] bio: create slab at 0 [ 0.220000] NET: Registered protocol family 2 [ 0.220000] IP route cache hash table entries: 1024 (order: 0, 4096 bytes) [ 0.220000] TCP established hash table entries: 512 (order: 0, 4096 bytes) [ 0.220000] TCP bind hash table entries: 512 (order: -1, 2048 bytes) [ 0.220000] TCP: Hash tables configured (established 512 bind 512) [ 0.220000] TCP reno registered [ 0.220000] UDP hash table entries: 256 (order: 0, 4096 bytes) [ 0.220000] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes) [ 0.230000] NET: Registered protocol family 1 [ 0.240000] squashfs: version 4.0 (2009/01/31) Phillip Lougher [ 0.240000] JFFS2 version 2.2 (NAND) (ZLIB) (LZO) (LZMA) (RTIME) (RUBIN) (CMODE_PRIORITY) (c) 2001-2006 Red Hat, Inc. [ 0.240000] msgmni has been set to 26 [ 0.240000] io scheduler noop registered [ 0.240000] io scheduler deadline registered (default) [ 0.250000] Serial: 8250/16550 driver, 2 ports, IRQ sharing disabled [ 0.250000] 400dc000.serial: ttyS0 at MMIO 0x400dc000 (irq = 21) is a 16550 [ 0.260000] console [ttyS0] enabled [ 0.270000] mcs814x-rng 4009c000.rng: registered [ 0.290000] 1c000000.flash: Found 1 x16 devices at 0x0 in 8-bit bank. Manufacturer ID 0x000020 Chip ID 0x00007e [ 0.300000] Amd/Fujitsu Extended Query Table at 0x0040 [ 0.310000] Amd/Fujitsu Extended Query version 1.3. [ 0.320000] number of CFI chips: 1 [ 0.330000] 6 ofpart partitions found on MTD device 1c000000.flash [ 0.340000] Creating 6 MTD partitions on "1c000000.flash": [ 0.350000] 0x000000000000-0x000000030000 : "ArmBoot" [ 0.370000] 0x000000030000-0x000000040000 : "Config1" [ 0.390000] 0x000000040000-0x000000050000 : "Config2" [ 0.410000] 0x000000050000-0x000000150000 : "kernel" [ 0.430000] 0x000000150000-0x000000510000 : "rootfs" [ 0.450000] mtd: partition "rootfs" set to be root filesystem [ 0.460000] mtd: partition "rootfs_data" created automatically, ofs=2F0000, len=220000 [ 0.470000] 0x0000002f0000-0x000000510000 : "rootfs_data" [ 0.490000] 0x000000050000-0x000000510000 : "linux" [ 0.520000] nuport-mac-mii: probed [ 0.530000] nuport-mac 40084000.ethernet: attached PHY driver [Generic PHY] (mii_bus:phy_addr=8) [ 0.540000] nuport-mac 40084000.ethernet: registered (MAC: 00:0b:3b:00:00:01) [ 0.560000] TCP cubic registered [ 0.570000] NET: Registered protocol family 17 [ 0.580000] NET: Registered protocol family 15 [ 0.610000] VFS: Mounted root (squashfs filesystem) readonly on device 31:4. [ 0.620000] Freeing init memory: 96K - preinit - Press the [f] key and hit [enter] to enter failsafe mode - regular preinit - [ 10.840000] JFFS2 notice: (315) jffs2_build_xattr_subsystem: complete building xattr subsystem, 1 of xdatum (0 unchecked, 0 orphan) and 3 of xref (0 dead, 0 orphan) found. switching to jffs2 - init - Please press Enter to activate this console. [ 12.590000] SCSI subsystem initialized [ 13.170000] usbcore: registered new interface driver usbfs [ 13.180000] usbcore: registered new interface driver hub [ 13.200000] usbcore: registered new device driver usb [ 13.900000] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver [ 13.910000] mcs814x-ehci 400fc000.ehci: MCS814X EHCI Host Controller [ 13.920000] mcs814x-ehci 400fc000.ehci: new USB bus registered, assigned bus number 1 [ 13.960000] mcs814x-ehci 400fc000.ehci: irq 2, io mem 0x400fc000 [ 13.990000] mcs814x-ehci 400fc000.ehci: USB 0.0 started, EHCI 1.00 [ 14.000000] hub 1-0:1.0: USB hub found [ 14.010000] hub 1-0:1.0: 4 ports detected [ 14.020000] mcs814x-ehci 400fc000.ehci: added MCS814X EHCI driver [ 14.130000] mcs814x-wdt 400f8014.watchdog: registered [ 14.190000] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver [ 14.200000] mcs814x-ohci 400fd000.ohci: MCS814X OHCI [ 14.210000] mcs814x-ohci 400fd000.ohci: new USB bus registered, assigned bus number 2 [ 14.220000] mcs814x-ohci 400fd000.ohci: irq 11, io mem 0x400fd000 [ 14.290000] hub 2-0:1.0: USB hub found [ 14.300000] hub 2-0:1.0: 2 ports detected [ 14.310000] mcs814x-ohci 400fe000.ohci: MCS814X OHCI [ 14.320000] mcs814x-ohci 400fe000.ohci: new USB bus registered, assigned bus number 3 [ 14.330000] mcs814x-ohci 400fe000.ohci: irq 12, io mem 0x400fe000 [ 14.400000] hub 3-0:1.0: USB hub found [ 14.410000] hub 3-0:1.0: 2 ports detected [ 14.480000] usbcore: registered new interface driver usbserial [ 14.500000] USB Serial support registered for generic [ 14.510000] usbcore: registered new interface driver usbserial_generic [ 14.520000] usbserial: USB Serial Driver core [ 14.600000] Initializing USB Mass Storage driver... [ 14.610000] usbcore: registered new interface driver usb-storage [ 14.620000] USB Mass Storage support registered. [ 14.710000] USB Serial support registered for FTDI USB Serial Device [ 14.720000] usbcore: registered new interface driver ftdi_sio [ 14.730000] ftdi_sio: v1.6.0:USB FTDI Serial Converters Driver [ 20.480000] eth0: link UP - 0/half [ 32.210000] Trying 100/FULL [ 33.310000] eth0: link UP - 100/full BusyBox v1.19.4 (2014-01-23 13:44:22 CET) built-in shell (ash) Enter 'help' for a list of built-in commands. _______ ________ __ | |.-----.-----.-----.| | | |.----.| |_ | - || _ | -__| || | | || _|| _| |_______|| __|_____|__|__||________||__| |____| |__| W I R E L E S S F R E E D O M ----------------------------------------------------- ATTITUDE ADJUSTMENT (Attitude Adjustment, r39154) ----------------------------------------------------- * 1/4 oz Vodka Pour all ingredients into mixing * 1/4 oz Gin tin with ice, strain into glass. * 1/4 oz Amaretto * 1/4 oz Triple sec * 1/4 oz Peach schnapps * 1/4 oz Sour mix * 1 splash Cranberry juice ----------------------------------------------------- root@OpenWrt:/#

Projects

Special thanks to Devolo for donating this nice device to the OpenWrt community

Tags

Back to top

toh/devolo/dlan-usb-extender.txt · Last modified: 2014/04/24 14:23 (external edit)