Re: Is this router based on the infineon danube?

Hi there.

Thanks, Peteridium.

I have been testing the wireless connection for some days and I'm now trying to connect it to dsl with no luck.
I installed kmod-ltq-ifxos and tested that ltq-dsl-app kmod-ltq-dsl-danube and kmod-ltq-dsl-firmware-a-danube
are there.
After that I detected that script ifx_cpe_control_init.sh used in
https://forum.openwrt.org/viewtopic.php?pid=135619#p135619
is not there, but in
http://code.semptian.net/code/p/mcp/sou … ol_init.sh
I saw that it has almost the same contents as
/etc/init.d/dsl_control

So I have tried to start dsl with no luck:

/sbin/dsl_cpe_control -i -f /lib/firmware/dsl-fw-a.bin  &
DSL_CPE: using 1st firmware file - /lib/firmware/dsl-fw-a.bin
DSL_CPE: Device /dev/dsl_cpe_api opened successfully
DSL_CPE: Could not unmask event(18) for device 0 (0)!
DSL_CPE: ADSL Firmware WHAT String 2.4.4.0.0.1
DSL_CPE: Already initialized - ignoring '-i' option!

DSL_CPE: Autoboot Load Firmware (using chunks) failed!, nRet = -1!
DSL_CPE: Autoboot Load Firmware (using chunks) failed!, nRet = -1!
DSL_CPE: Autoboot Load Firmware (using chunks) failed!, nRet = -1!
DSL_CPE: Autoboot Load Firmware (using chunks) failed!, nRet = -1!
DSL_CPE: Autoboot Load Firmware (using chunks) failed!, nRet = -1!
DSL_CPE: ERROR - FW download failed on the 5 retry!

dmesg shows:
...
[75845.340000] IFXOS, Version 1.5.14 (c) Copyright 2009, Lantiq Deutschland GmbH
[75845.340000]
[76554.368000] [IFX_MEI_RunAdslModem 1336]: Firmware download is not completed. Please download firmware again!
[76554.376000] [IFX_MEI_Ioctls 2551]: IFX_MEI_RunAdslModem() error...
...
[76802.520000] [DSL_BSP_Showtime 916]: Datarate US intl = 765632, fast = 0
[76908.292000] leave showtime
[77030.736000] [IFX_MEI_RunAdslModem 1336]: Firmware download is not completed. Please download firmware again!
[77030.744000] [IFX_MEI_Ioctls 2551]: IFX_MEI_RunAdslModem() error...

Does anyone know how to fix this?
Thanks in advance,

Victor.

Re: Is this router based on the infineon danube?

In the last revision of trunk blogic solved some problems with the adsl modules:
https://dev.openwrt.org/changeset/34098
and this is a ticket with the issue:
https://dev.openwrt.org/ticket/12340

In /etc/config/network delete the line  "option annex 'a2p'" or write # al the beginning.
Some more information here (the OpenWRT images are for the arv7518):
http://foro.seguridadwireless.net/openw … #msg256236

Hope this information could be helpful.

Re: Is this router based on the infineon danube?

Hi there.

Thanks Pteridium, this might be the reason.

I used an image from
http://downloads.openwrt.org/attitude_adjustment/12.09-beta/lantiq/danube/
because there was no valid image in
http://downloads.openwrt.org/attitude_adjustment/12.09-beta2/lantiq/danube/
and now the first is outdated and there is one valid image in the last one.

But I'll download the one in
http://downloads.openwrt.org/snapshots/trunk/lantiq/
because it's dated from 07-Nov-2012 and
the patch you talk about is from Nov 6, 2012 8:41:44 AM

Although maybe it is time for me to start learning how to compile OpenWRT
and generate my own image. I really want to ... ;-)

Thanks again.
Victor.

829 (edited by pgid69 2012-11-15 14:27:57)

Re: Is this router based on the infineon danube?

Hello

A few days ago i tried to install OpenWrt on the SMC 7908 / Arcadyan 4518PW.
I followed instructions form Ayaya on page 27 of this topic.
Ayaya warns that in uboot from trunk, tftp and http are not working.
As this warning dates from may 2012, i though that uboot code was corrected.
Unfortunately i was wrong and i flashed a bootloader that could not upload anything.
As i have no skills in soldering, instead of enabling UART mode, i develop a small python program to upload something in memory by using command mw of uboot.

Here is the program :

# -*- coding: utf-8 -*-
from __future__ import division #1/2 = float, 1//2 = integer, python 3.0 behaviour in 2.6, to make future port to 3 easier.
from __future__ import print_function
from optparse import OptionParser
import os
import struct
import sys
import zlib

debug = False
if not debug:
        import serial

# The maximum size to transfer if we can determinate the size of the file (if input data comes from stdin).
MAX_SIZE = 2 ** 30
LINE_FEED = "\n"

# Wait for the prompt
def getprompt(ser, addr, verbose):

        # Send a command who does not produce a result so when receiving the next line feed, only show the prompt will be returned
        ser.write("mw {0:08x} 0".format(addr) + LINE_FEED)
        # Flushing read buffer
        while ser.read(256):
                pass
        if verbose:
                print("Waiting for a prompt...", file = sys.stderr)
        while True:
                # Write carriage return and wait for a response
                ser.write(LINE_FEED)
                # Read the response
                buf = ser.read(256);
                if (buf.endswith(b"=> ")):
                        if verbose:
                                print("Ok, prompt is '", buf, "'", sep='', file = sys.stderr)
                        # The prompt returned starts with a line feed. This is the echo of the line feed we send to get the prompt.
                        # We keep this linefeed
                        return buf
                else:
                        # Flush read buffer
                        while ser.read(256):
                                pass

# Wait for the prompt and return True if received or False otherwise 
def writecommand(ser, command, prompt, verbose):

        # Write the command and a line feed, so we must get back the command and the prompt
        ser.write(command)
        ser.write(LINE_FEED)
        
        buf = ser.read(len(command))
        if (buf != command):
                if verbose:
                        print("Echo command not received. Instead received '", buf, "'", sep='', file = sys.stderr)
                return False

        if verbose:
                print("Waiting for prompt...", file = sys.stderr)
        
        buf = ser.read(len(prompt))
        if (buf == prompt):
                if verbose:
                        print("Ok, prompt received", file = sys.stderr)
                return True
        else:
                if verbose:
                        print("Prompt not received. Instead received '", buf, "'", sep='', file = sys.stderr)
                return False

def memwrite(ser, path, size, start_addr, verbose, debug):
        
        if not debug:
                prompt = getprompt(ser, start_addr, verbose)
        
        if (path == "-"):
                fd = sys.stdin
                if (size <= 0):
                        size = MAX_SIZE 
        else:
                fd = open(path,"rb")
                if (size <= 0):
                        # Get the size of the file
                        fd.seek(0, os.SEEK_END);
                        size = fd.tell();
                        fd.seek(0, os.SEEK_SET);

        addr = start_addr
        bytes_read = 0
        crc32_checksum = 0
        while (bytes_read < size):
                if ((size - bytes_read) > 4):           
                        read_bytes = fd.read(4);
                else:
                        read_bytes = fd.read(size - bytes_read);

                if (len(read_bytes) == 0):
                        if (path == "-"):
                                size = bytes_read
                        break

                bytes_read += len(read_bytes)
                crc32_checksum = zlib.crc32(read_bytes, crc32_checksum) & 0xFFFFFFFF
                
                while (len(read_bytes) < 4):
                        read_bytes += b'\x00'

                (val, ) = struct.unpack(">L", read_bytes)
                read_bytes = "".format(val)

                str_to_write = "mw {0:08x} {1:08x}".format(addr, val)
                if verbose:
                        print("Writing:", str_to_write, "at:", "0x{0:08x}".format(addr), file = sys.stderr)

                if debug:
                        str_to_write = struct.pack(">L", int("{0:08x}".format(val), 16))

                if not debug:
                        if not writecommand(ser, str_to_write, prompt, verbose):
                                print("Found an error, so aborting", file = sys.stderr)
                                return

                # Increment address
                addr += 4

        if (bytes_read != size):
                print("Error while reading file '", fd.name, "' at offset ", bytes_read, sep='', file = sys.stderr)
        else:
                print("File successfully written. You should run command 'crc32", " {0:08x}".format(start_addr), " {0:08x}".format(bytes_read), "' on the modem and the result must be", " {0:08x}".format(crc32_checksum), ".", sep='', file = sys.stderr)
                
        fd.close()
        return

def main():

        optparser = OptionParser("usage: %prog [options]", version = "%prog 0.1")
        optparser.add_option("--verbose", action = "store_true", dest = "verbose", help = "be verbose", default = False)
        optparser.add_option("--serial", dest = "serial", help = "specify serial port", default = "/dev/ttyUSB0", metavar = "dev")
        optparser.add_option("--write", dest = "write", help = "write mem from file", metavar = "path")
        optparser.add_option("--addr", dest = "addr", help = "mem address", default = "0x80500000", metavar = "addr")
        optparser.add_option("--size", dest = "size", help = "# bytes to write", default = "0", metavar = "size")
        (options, args) = optparser.parse_args()
        if (len(args) != 0):
                optparser.error("incorrect number of arguments")

        if not debug:
                ser = serial.Serial(options.serial, 115200, timeout=1)
        else:
                ser = open(options.write + ".out", "wb")
        
        if debug:
                prompt = getprompt(ser, options.verbose)
                writecommand(ser, "mw 80500000 01234567", prompt, options.verbose)
                buf = ser.read(256)
                print("buf = '", buf, "'", sep = "")
                return

        if options.write:
                memwrite(ser, options.write, int(options.size, 0), int(options.addr, 0), options.verbose, debug)
        return

if __name__ == '__main__':
        main()

It works only with uboot (not brnboot).
First connect to the modem with serial and start the modem as explained in page 21 or 27 of this topic
Then launch the program above

ubootwrite.py --serial=/dev/ttyUSB0 --write=file_to_write --addr=0x80500000

This will write the file in the memory of the modem.
Then you could use commands for uboot to flash it.

I run the program with python 2.7, but it should work with python 3.

PS : please note that it's one of my first program in Python. I started from brntool.py from Roc Valles (https://github.com/rvalles/brntool) and adapted it, so please be indulgent if you find the code is clumsy.

830

Re: Is this router based on the infineon danube?

Hello,
the switch on my ARV752DPW router still won't work with the latest trunk r34222. I tried several vlan configurations but no traffic is routed on all ports sad

/etc/config/network:

config interface 'loopback'
        option ifname 'lo'
        option proto 'static'
        option ipaddr '127.0.0.1'
        option netmask '255.0.0.0'

config interface 'lan'
        option ifname 'eth0'
        option type 'bridge'
        option proto 'static'
        option ipaddr '192.168.1.1'
        option netmask '255.255.255.0'

config 'switch' 'eth0'
        option 'reset' '1'
        option 'enable' '1'
        option 'enable_vlan' '1'

config 'switch_vlan'
        option 'device' 'eth0'
        option 'vlan' '1'
        option 'vid' '1'
        option 'ports' '5 4 3 2 0t'

Also tried option ifname 'eth0.1' and 'eth0.2' for interface lan.

swconfig dev eth0 show:

Global attributes:
        reset: ???
        enable_vlan: ???
        trunk: 0
        trunk_sel: 0
Port 0:
        pvid: 0
        link: 0
        speed: 0
        nway: 1
Port 1:
        pvid: 15
        link: 0
        speed: 0
        nway: 1
Port 2:
        pvid: 1
        link: 0
        speed: 0
        nway: 1
Port 3:
        pvid: 1
        link: 0
        speed: 0
        nway: 1
Port 4:
        pvid: 1
        link: 0
        speed: 0
        nway: 1
Port 5:
        pvid: 5
        link: 0
        speed: 1
        nway: 0
VLAN 0:
        vid: 0
        ports: 0 5 
VLAN 1:
        vid: 1
        ports: 0 2 3 4 5 
VLAN 2:
        vid: 2
        ports: 2 5 
VLAN 3:
        vid: 3
        ports: 3 5 
VLAN 4:
        vid: 4
        ports: 4 5 
VLAN 5:
        vid: 5
        ports: 0 1 2 3 4 

Re: Is this router based on the infineon danube?

Hi,

I have a vodafone BeWAN ARV4510-PW-A that I want to flash with openwrt.
the device has the following firmware info:

# fwburn -i
Current firmware:
  copyright             : Copyright (c) 2006-2008 BeWAN Systems
  platform              : Arcadyan vf-ARV4510PW-A-LF-L3 - Vodafone_PT
  platform              : A51404
  filename              : A51404-vodafone_PT4.2-17076.bin
  date                  : 2008-10-16-15:43:59
  svn version           : 17076
  boot status           : will boot
  boot order            : 2
  checksum              : NOT tested

Previous firmware:
  copyright             : Copyright (c) 2006-2008 BeWAN Systems
  platform              : Arcadyan vf-ARV4510PW-A-LF-L3
  platform              : A51400
  filename              : A51400-vodafone_PT4.2-17076.bin
  date                  : 2008-10-16-15:43:59
  svn version           : 17076
  boot status           : will boot
  boot order            : 1
  checksum              : NOT tested
# cat /proc/mtd
dev:    size   erasesize  name
mtd0: 01000000 00020000 "Flash"
mtd1: 00020000 00008000 "Loader"
mtd2: 00020000 00020000 "Config"
mtd3: 007e0000 00020000 "Firmware"
mtd4: 007e0000 00020000 "OldFirmware"
mtd5: 00673000 00020000 "ART"
# ls -la /dev/mtd 
drwxr-xr-x    1 root     root            0 Jan  1  1970 .
drwxr-xr-x    1 root     root            0 Jan  1  1970 ..
cr--r--r--    1 root     root      90,   0 Jan  1  1970 0
cr--r--r--    1 root     root      90,   1 Jan  1  1970 0ro
cr--r--r--    1 root     root      90,   2 Jan  1  1970 1
cr--r--r--    1 root     root      90,   3 Jan  1  1970 1ro
cr--r--r--    1 root     root      90,   4 Jan  1  1970 2
cr--r--r--    1 root     root      90,   5 Jan  1  1970 2ro
cr--r--r--    1 root     root      90,   6 Jan  1  1970 3
cr--r--r--    1 root     root      90,   7 Jan  1  1970 3ro
cr--r--r--    1 root     root      90,   8 Jan  1  1970 4
cr--r--r--    1 root     root      90,   9 Jan  1  1970 4ro
cr--r--r--    1 root     root      90,  10 Jan  1  1970 5
cr--r--r--    1 root     root      90,  11 Jan  1  1970 5ro
# ls -la /dev/mtdblock
drwxr-xr-x    1 root     root            0 Jan  1  1970 .
drwxr-xr-x    1 root     root            0 Jan  1  1970 ..
br--------    1 root     root      31,   0 Jan  1  1970 0
br--------    1 root     root      31,   1 Jan  1  1970 1
br--------    1 root     root      31,   2 Jan  1 01:07 2
br--------    1 root     root      31,   3 Jan  1  1970 3
br--------    1 root     root      31,   4 Jan  1  1970 4
br--------    1 root     root      31,   5 Jan  1  1970 5

I already backup with dd to an usb all mtd from 0 to 5.
the result file from "cat 1 2 3 4" equals 0 mtd

My questions are:
- Can I flash directly the bootloader and firmware with dd and how, using http://downloads.openwrt.org/backfire/10.03.1/lantiq_danube/
openwrt-lantiq-danube-ARV4510PW-squashfs.image
openwrt-lantiq-danube-ARV4510PW-uImage

- If dd doesn't work, can I use the mtd from http://downloads.openwrt.org/backfire/10.03.1/lantiq_danube/packages/mtd_13_lantiq.ipk loaded from a usb drive?

regards

Re: Is this router based on the infineon danube?

Hello,
Be so kind help with ARV752DPW22 wifi.
I installed last openwrt from trunk, but wifi does not work.

Has anyone been able to run WiFi on ARV752DPW22 ?

How can I do correct chipset detect  = rt: 3062 ?

[   16.060000] Lantiq VMMC device driver, version 1.9.0.3, (c) 2006-2010 Lantiq Deutschland GmbH
[   16.432000] PCI: Enabling device 0000:00:0e.0 (0000 -> 0002)
[   16.436000] rt2800pci 0000:00:0e.0: setting latency timer to 64
[   16.444000] phy0 -> rt2800_validate_eeprom: EEPROM recovery - MAC: 12:bc:a0:df:c6:eb
[   16.464000] phy0 -> rt2x00_set_chip: Info - Chipset detected - rt: 3572, rf: 0000, rev: 0221.
[   16.472000] ieee80211 phy0: Selected rate control algorithm 'minstrel_ht'
[   16.476000] Registered led device: rt2800pci-phy0::radio
[   16.476000] Registered led device: rt2800pci-phy0::assoc
[   16.476000] Registered led device: rt2800pci-phy0::quality
[   16.656000] NET: Registered protocol family 8
[   16.656000] NET: Registered protocol family 20

Re: Is this router based on the infineon danube?

misha.gps wrote:

Hello,
Be so kind help with ARV752DPW22 wifi.
I installed last openwrt from trunk, but wifi does not work.

Has anyone been able to run WiFi on ARV752DPW22 ?

How can I do correct chipset detect  = rt: 3062 ?

rt2800pci covers almost all the ralink N wifi chipsets.


misha.gps wrote:

[   16.060000] Lantiq VMMC device driver, version 1.9.0.3, (c) 2006-2010 Lantiq Deutschland GmbH
[   16.432000] PCI: Enabling device 0000:00:0e.0 (0000 -> 0002)
[   16.436000] rt2800pci 0000:00:0e.0: setting latency timer to 64
[   16.444000] phy0 -> rt2800_validate_eeprom: EEPROM recovery - MAC: 12:bc:a0:df:c6:eb
[   16.464000] phy0 -> rt2x00_set_chip: Info - Chipset detected - rt: 3572, rf: 0000, rev: 0221.
[   16.472000] ieee80211 phy0: Selected rate control algorithm 'minstrel_ht'
[   16.476000] Registered led device: rt2800pci-phy0::radio
[   16.476000] Registered led device: rt2800pci-phy0::assoc
[   16.476000] Registered led device: rt2800pci-phy0::quality
[   16.656000] NET: Registered protocol family 8
[   16.656000] NET: Registered protocol family 20

The log seems to be ok as the ralink driver have detected the wifi and the MAC.
Have you tried to enable the wifi? By default is disabled.

834 (edited by misha.gps 2013-03-05 18:10:30)

Re: Is this router based on the infineon danube?

Pteridium wrote:

rt2800pci covers almost all the ralink N wifi chipsets.


Not in my case. By default rt2800pci said that "Invalid RF chipset 0 detected."
for correcting the error
In the end, I added one line of code to rt2800lib.c -> static int rt2800_init_eeprom(struct rt2x00_dev *rt2x00dev)

value = RF3022;

everything looks good - no errors and WiFi enabled, but the AP is not visible.
(If I put dd-wrt - wifi works)


Pteridium wrote:

The log seems to be ok as the ralink driver have detected the wifi and the MAC.
Have you tried to enable the wifi? By default is disabled.



Any way - when I make wifi enable, i see Bitrate: ? Mbit/s and
Signal: 0 dBm | Noise: 0 dBm
Bitrate: 0.0 Mbit/s

I don't see my AP from outside.

root@OpenWrt:/# cat /etc/config/wireless

config wifi-device 'radio0'
        option type 'mac80211'
        option channel '11'
        option hwmode '11ng'
        option path 'pci0000:00/0000:00:0e.0'
        option htmode 'HT20'
        list ht_capab 'GF'
        list ht_capab 'SHORT-GI-20'
        list ht_capab 'SHORT-GI-40'

config wifi-iface
        option device 'radio0'
        option network 'lan'
        option mode 'ap'
        option ssid 'OpenWrt'
        option encryption 'none'


root@OpenWrt:/# iwconfig

wlan0     IEEE 802.11bgn  Mode:Master  Tx-Power=20 dBm
          RTS thr:off   Fragment thr:off
          Power Management:off

Re: Is this router based on the infineon danube?

I am trying to install OpenWRT using this site http://wiki.openwrt.org/toh/arcadyan/arv7510pw
but with every u-boot i try gives me this error

ARV4510PW # protect  off  all
Un-Protect Flash Bank # 1
................................................................................................................................ done
ARV4510PW # erase all
Erase Flash Bank # 1 
................................................................................................................................ done
ARV4510PW # loady 0x80700000
## Ready for binary (ymodem) download to 0x80700000 at 115200 bps...
C
Starting ymodem transfer.  Press Ctrl+C to cancel.
  100%     176 KB    4 KB/s 00:00:42       0 Errorsg...

xyzModem - CRC mode, 1414(SOH)/0(STX)/0(CAN) packets, 3 retries
## Total Size      = 0x0002c20c = 180748 Bytes
ARV4510PW #0 0 0
ARV4510PW # cp.l 0x80700000 0xb0000000 0x40000
Copy to Flash... 10Flash not Erased
ARV4510PW # 

any ideas what to do?

Re: Is this router based on the infineon danube?

If someone have ARV752DPW22, rev:01B, Vodafone Easybox 803A - you will have problem with wifi (openwrt trunk from 11.03.2013).
The problem is connected with incorrect reading of rt3062 eeprom through PCI.

I don't know how to do eeprom reading  correct, but I can did dirty hack.

via ssh I did

hexdump -s 0x410 -n 0x110 -x /dev/mtd6

and make small fix of ./build_dir/target-mips_r2_uClibc-0.9.33.2/linux-lantiq_xway/compat-wireless-2013-02-22/drivers/net/wireless/rt2x00/rt2800pci.c

don't forget do
rm ./build_dir/target-mips_r2_uClibc-0.9.33.2/linux-lantiq_xway/compat-wireless-2013-02-22/drivers/net/wireless/rt2x00/rt2800pci.o

I fill eeprom buffer from result of hexdump output

static int rt2800pci_read_eeprom_pci(struct rt2x00_dev *rt2x00dev)
{
        struct eeprom_93cx6 eeprom;
        u32 reg;

        rt2x00pci_register_read(rt2x00dev, E2PROM_CSR, &reg);

        eeprom.data = rt2x00dev;
        eeprom.register_read = rt2800pci_eepromregister_read;
        eeprom.register_write = rt2800pci_eepromregister_write;
        switch (rt2x00_get_field32(reg, E2PROM_CSR_TYPE))
        {
        case 0:
                eeprom.width = PCI_EEPROM_WIDTH_93C46;
                break;
        case 1:
                eeprom.width = PCI_EEPROM_WIDTH_93C66;
                break;
        default:
                eeprom.width = PCI_EEPROM_WIDTH_93C86;
                break;
        }
        eeprom.reg_data_in = 0;
        eeprom.reg_data_out = 0;
        eeprom.reg_data_clock = 0;
        eeprom.reg_chip_select = 0;

//      eeprom_93cx6_multiread(&eeprom, EEPROM_BASE, rt2x00dev->eeprom,
//                             EEPROM_SIZE / sizeof(u16));

        u16 iPos = 0;

rt2x00_eeprom_write(rt2x00dev,iPos++,0x3062  );
rt2x00_eeprom_write(rt2x00dev,iPos++,0x0001  );
rt2x00_eeprom_write(rt2x00dev,iPos++,0x8825  );
rt2x00_eeprom_write(rt2x00dev,iPos++,0x2CF1  );
rt2x00_eeprom_write(rt2x00dev,iPos++,0x82FA  );
rt2x00_eeprom_write(rt2x00dev,iPos++,0x3062  );
rt2x00_eeprom_write(rt2x00dev,iPos++,0x1814  );
rt2x00_eeprom_write(rt2x00dev,iPos++,0x8001 );
rt2x00_eeprom_write(rt2x00dev,iPos++,0x0000  );
rt2x00_eeprom_write(rt2x00dev,iPos++,0x3062  );
....
rt2x00_eeprom_write(rt2x00dev,iPos++,0xFFFF  );
rt2x00_eeprom_write(rt2x00dev,iPos++,0xFFFF  );

        return 0;
}

after that wifi working perfectly

837

Re: Is this router based on the infineon danube?

ancient wrote:

I am trying to install OpenWRT using this site http://wiki.openwrt.org/toh/arcadyan/arv7510pw
but with every u-boot i try gives me this error

ARV4510PW # protect  off  all
Un-Protect Flash Bank # 1
................................................................................................................................ done
ARV4510PW # erase all
Erase Flash Bank # 1 
................................................................................................................................ done
ARV4510PW # loady 0x80700000
## Ready for binary (ymodem) download to 0x80700000 at 115200 bps...
C
Starting ymodem transfer.  Press Ctrl+C to cancel.
  100%     176 KB    4 KB/s 00:00:42       0 Errorsg...

xyzModem - CRC mode, 1414(SOH)/0(STX)/0(CAN) packets, 3 retries
## Total Size      = 0x0002c20c = 180748 Bytes
ARV4510PW #0 0 0
ARV4510PW # cp.l 0x80700000 0xb0000000 0x40000
Copy to Flash... 10Flash not Erased
ARV4510PW # 

any ideas what to do?

That is because the flash chip in ARV4510PW/ARV7510PW has broken buffered writes. I have disabled it in the latest version of the U-Boot patch linked in the wiki page you used. Also TFTP works in that version, so no need to use loady anymore. If you have any problems in the installation process, let me know and I try to make the wiki page better!

Re: Is this router based on the infineon danube?

Thanks! now everything works. I had to do erase again before squashfs.image and i used "era 0xb0060000 +{filesize}"
dont know if this is the correct way but all seems to work.

Re: Is this router based on the infineon danube?

There is a little issue with block-extroot in the Lantiq target:  https://dev.openwrt.org/ticket/12807

The workarounds explained are very simple and worked perfectly.

Hope this post could help somebody.

840

Re: Is this router based on the infineon danube?

ancient wrote:

Thanks! now everything works. I had to do erase again before squashfs.image and i used "era 0xb0060000 +{filesize}"
dont know if this is the correct way but all seems to work.

Extra erase should not be needed if the whole flash is erased, but it won't do any harm either. Do you have a 4510 or 7510? If you have 4510 I could add information to the wiki that it works on that model as well.

841 (edited by qwertz123 2013-04-13 08:07:15)

Re: Is this router based on the infineon danube?

I had the same problem getting wifi to work with ARV752DPW22, rev:01C:

misha.gps wrote:

If someone have ARV752DPW22, rev:01B, Vodafone Easybox 803A - you will have problem with wifi (openwrt trunk from 11.03.2013).
The problem is connected with incorrect reading of rt3062 eeprom through PCI.

I don't know how to do eeprom reading  correct, but I can did dirty hack.
[...snip...]
after that wifi working perfectly

Here's the story of what I did:

(All testing was done against current trunk, all patches are for about r36130.)

Starting point was this forum thread which hinted for some time about the WLAN eeprom not  being loaded / extracted. The fix for this is easy, just patch:
    /etc/hotplug.d/firmware/10-rt2xx-eeprom
or do the steps manually.

Patch: ARV752DPW-hotplug-firmware-wifi-eeprom.patch

(The patch just adds another case to the script, maybe it would be better to strip the old/other cases out completely?)

But, this wasn't working - even if the file was present, it would not be loaded. Browsing the source code and openwrt patches showed that there should be a Message if any filename was even attempted to load - no such luck with my box.

Since it seemed to be working on ARV752DPW and it should not be overly complicated  (the eeprom is even stored in the same mtd blocks), I thought it could only be some board specific code.

I thought maybe it's got something to do with the whole device-tree migration....

--> Bingo! The *.dts file on ARV752DPW defined an eeprom name, the ARV752DPW22 didn't

Patch: ARV752DPW-dts.patch

So, now it tried to load the file and if it was present, it would even succeed.

But, the file wasn't generated by default, manually generating it worked fine.

Why? Because /lib/functions/lantiq.sh greps /proc/cpuinfo for the board name/type which simply stated "Danube rev. 1.5" and didn't include the board name at all. Hmmm..... I was pretty sure this worked before in 3.7?

Luckily the Patches for 3.7 are still present. After a bit of digging around in the arch code of the kernel I was pretty sure that the "arch" directory and/or "prom.c" would be the place to edit if i wanted to do something like this.

Grepping the existing linux-3.7 patches showed that there was something going on in that place *and* most the patches are missing for linux-3.8. I isolated the missing feature to the "0100-MIPS-lantiq-honour-model-property-inside-devicetree-.patch" patch and tested if it applied against linux-3.8. Unfortunately, the entire patch series was reorganized, so 0100 means "last patch" as of now. Since I didn't want to mess around with the other patches, i rewrote the patch a bit (mostly line numbers) so that it applies correctly.

Another rebuild later -> bingo.

EDIT: This patch is outdated. Model name is contained in the "machine" line of /proc/cpuinfo as of now. Therefore the file /lib/functions/lantiq must be patched to reflect that.
Patch: ARV752DPW22-enable_model_dts.patch

The only problem is, that even if my Box now generates the eeprom an loads it, i still can't get WLAN to work.
"iwlist scan" shows nothing (I'm trying to join an existing wifi network as client) and I'm getting "command failed: No buffer space available (-132)" on "wifi enable".

I'm stumped as to why this is happening, maybe i've missed something else.

I hope that at least the patches/code may help someone else to get it to work, no Idea what's wrong with my setup since loading the eeprom worked for "misha.gps".
Currently I'm compiling a bare-bones trunk, I'm still hoping my wifi will magically work with that.


Edit: I forgot something:
The default profile for ARV752DPW22 also doesn't contain wifi modules and userspace software, so I also patched it:
ARV752DPW22-profile.patch

Re: Is this router based on the infineon danube?

Like onny, I have also problems to get the switch working ... my device is a ARV752DPW22
My plan is really simple ... I just want to use the 4Lan ports on my router, without any subnets etc.

config interface 'loopback'
        option ifname 'lo'
        option proto 'static'
        option ipaddr '127.0.0.1'
        option netmask '255.0.0.0'

config interface 'lan'
        option type 'bridge'
        option proto 'static'
        option ipaddr '192.168.1.1'
        option netmask '255.255.255.0'
        option bridge 'true'
        option ifname 'eth0'

config switch 'eth0'
        option enable_vlan '1'
        option reset '1'

config switch_vlan
        option device 'eth0'
        option vlan '1'
        option ports '0t 1t 2 3 4 5t'
        option vid '1'

config adsl-device 'adsl'
        option fwannex 'b'
        option annex 'b2p'

config atm-bridge 'atm'
        option unit '0'
        option vpi '1'
        option vci '32'
        option encaps 'llc'
        option payload 'bridged'

config interface 'wan'
        option ifname 'nas0'
        option proto 'pppoe'
        option username 'bla'
        option password 'blub'

Also my wlan is active ...

config wifi-device 'radio0'
        option type 'mac80211'
        option macaddr '0c:00:28:43:00:60'
        option hwmode '11ng'
        option noscan '1'
        list ht_capab 'GF'
        list ht_capab 'SHORT-GI-20'
        list ht_capab 'SHORT-GI-40'
        list ht_capab 'RX-STBC1'
        option channel '11'
        option htmode 'HT40-'
        option country 'DE'

config wifi-iface
        option device 'radio0'
        option mode 'ap'
        option ssid 'bla'
        option encryption 'psk2'
        option key 'blub'
        option network 'lan'

Has anybody a clue how to get this running ...

843

Re: Is this router based on the infineon danube?

qwertz123, are you going to push your patches to trunk?

844 (edited by qwertz123 2013-04-09 19:24:55)

Re: Is this router based on the infineon danube?

mgies wrote:

qwertz123, are you going to push your patches to trunk?

If someone wants to include them, feel free, no rights reserved.
EDIT: The patch ARV752DPW22-enable_model_dts.patch is still needed it seems.

Other than that:
I'm not a developer, more like an tester who knows to read code. I have only a rudimentary knowledge of the openwrt development process and project structure.
From what I could see, tickets for the lantiq platform in the bugtracker don't seem to make any progress at all. I don't believe any developer for the platform is actually working with the bugtracker...

So I'm doing this "one shot" in the hopes to get my ARV752DPW22 (and ARV752DPW) up and running.
Unfortunately I have not succeeded so far:
Even with my patches I get no wifi scan results and I'm unable to join or host a wifi network on ARV75DPW22.
The other box with ARV752DPW was constantly rebooting before. At the moment it doesn't boot at all since it can't seem to mount anything, not even serial console works.
I'm guessing I'll monitor the situation a while longer, until i finally loose interest or get better boxes.

845

Re: Is this router based on the infineon danube?

qwertz123 wrote:

Even with my patches I get no wifi scan results and I'm unable to join or host a wifi network on ARV75DPW22.

Out of curiosity, can you try to replace the line

req-mask = <0x3>;

in /trunk/target/linux/lantiq/image/ARV752DPW22.dts to

req-mask = <0xf>;

and line

lantiq,groups = "gnt1";

to

lantiq,groups = "gnt1", "gnt2";

Let me know if that helps.

846

Re: Is this router based on the infineon danube?

qwertz123 wrote:

Other than that:
I'm not a developer, more like an tester who knows to read code. I have only a rudimentary knowledge of the openwrt development process and project structure.
From what I could see, tickets for the lantiq platform in the bugtracker don't seem to make any progress at all. I don't believe any developer for the platform is actually working with the bugtracker...

Yep, I understand. Me neither, that's why I'm asking... wink

qwertz123 wrote:

Even with my patches I get no wifi scan results and I'm unable to join or host a wifi network on ARV75DPW22.

Isn't wireless-tools required for scanning and simple WEP encryption? You didn't add it with your last patch...

Re: Is this router based on the infineon danube?

mgies wrote:
qwertz123 wrote:

Even with my patches I get no wifi scan results and I'm unable to join or host a wifi network on ARV75DPW22.

Isn't wireless-tools required for scanning and simple WEP encryption? You didn't add it with your last patch...

I have the packages in my config/image, but they don't work. My patch just added the absolute minimum packages which worked on ARV752DPW, I assume everything else is optional wink.

I usually get various error messages if I use tools like "iw", "rfkill", "iwlist" etc.
At one point I even tried compiling rfkill in, didn't help.

Most errors simply state something like "command failed: No buffer space available (-132)", "device/resource busy" or the like, but I could not pinpoint what is failing and why. Google was no help either.

I'm currently trying the mods suggested by "snk", I think modding the device tree file (*.dts) seems like a good idea since the eeprom wasn't poperly defined before patching it in.
Unfortunately I don't really know the hardware to properly write my own DTS, I can only look into other files and hope for the best.

848 (edited by qwertz123 2013-04-09 19:07:09)

Re: Is this router based on the infineon danube?

EDIT:
Ignore this, this was my foulup. I configured busybox wrong, I guess it was CONFIG_BUSYBOX_CONFIG_FEATURE_SH_STANDALONE, which does not work in a non-static build.

I'm currently trying the mods suggested by "snk", I think modding the device tree file (*.dts) seems like a good idea since the eeprom wasn't poperly defined before patching it in.

Funny:

... snip ....
[    0.404000] 4 ofpart partitions found on MTD device ltq_nor
[    0.408000] Creating 4 MTD partitions on "ltq_nor":
[    0.416000] 0x000000000000-0x000000010000 : "uboot"
[    0.424000] 0x000000010000-0x000000020000 : "uboot_env"
[    0.428000] 0x000000020000-0x0000007f0000 : "linux"
[    0.436000] found squashfs behind kernel
[    0.440000] Creating 2 MTD partitions on "ltq_nor":
[    0.444000] 0x000000020000-0x00000013d443 : "kernel"
[    0.448000] mtd: partition "kernel" must either start or end on erase block boundary or be smaller than an erase block -- forcing read-only
[    0.464000] 0x00000013d443-0x0000007f0000 : "rootfs"
[    0.468000] mtd: partition "rootfs" must either start or end on erase block boundary or be smaller than an erase block -- forcing read-only
[    0.480000] mtd: partition "rootfs" set to be root filesystem
[    0.488000] mtd: partition "rootfs_data" created automatically, ofs=730000, len=C0000 
[    0.492000] 0x000000730000-0x0000007f0000 : "rootfs_data"
[    0.500000] 0x0000007f0000-0x000000800000 : "board_config"
[    0.548000] switch0: Atheros AR8216 switch registered on 1e180000.etop-ff
[    0.584000] libphy: ltq_mii: probed
[    0.680000] eth0: attached PHY [Atheros AR8216/AR8236/AR8316] (phy_addr=1e180000.etop-ff:00, irq=-1)
[    0.692000] wdt 1f8803f0.watchdog: Init done
[    0.696000] leds-gpio gpio-leds.6: pins are not configured from the driver
[    0.716000] TCP: cubic registered
[    0.716000] NET: Registered protocol family 17
[    0.720000] Bridge firewalling registered
[    0.724000] 8021q: 802.1Q VLAN Support v1.8
[    0.748000] VFS: Mounted root (squashfs filesystem) readonly on device 31:4.
[    0.752000] Freeing unused kernel memory: 208k freed
/etc/preinit: line 1: mount: not found
/etc/preinit: line 1: mount: not found
awk: /proc/meminfo: No such file or directory
/etc/preinit: line 1: mount: not found
/etc/preinit: line 1: grep: not found
/etc/preinit: line 1: grep: not found
/etc/preinit: line 1: mount: not found
/etc/preinit: line 1: grep: not found
mknod: /dev/console: Read-only file system

.... on current trunk.
I got this error on my ARV752DPW last week, seems like the bug "migrated" to ARV752DPW22. At first I thought it had something to do with "procd as init", but i tried with and without it.
As far as I can tell, the commands are where they are supposed to be? The funny thing is, "awk" and "mknod" are working. So my initial guess "no PATH set" isn't possible. The line number is bogus as far as i can see, neither the /init, /etc/preinit nor other scripts do something with mount/grep on line 1.

No idea, I guess I'll have to test a minimal config again, the above is a heavily modded build (7,25MiB Flash used).

I hate starting from scratch...

Re: Is this router based on the infineon danube?

Another question just came up:

Is there any way to build uboot for ARV752DPW22 (and ARV752DPW)?
Or are there some new binaries to download?

I downloaded some semi-working versions from this thread, but they are buggy or not "feature complete".
Hence I'd like to build my own version, at least for ARV752DPW22, since the one i'm currently using has no working ethernet.
But I could not find the sources anywhere and via openwrt there is only support for ARV7518, which detects ram/clock speeds wrong.

At the moment I have to boot via UART/ramboot to recover my ARV752DPW22, which is annoying as hell.

850 (edited by snk 2013-04-09 19:09:21)

Re: Is this router based on the infineon danube?

The "old" (2010.03) U-Boots on Danube were incredibly unreliable when it comes to networking. The new branch (2013.01) in trunk is working perfectly.

There is no profile for ARV752*, but it should be quite trivial to make one based on the other Danube profiles. I made one for ARV7510PW: http://ltl.tkk.fi/~malaakso/misc/0030-MIPS-add-board-support-for-Arcadyan-ARV7510.patch

The information you need is basically memory size, switch type and connection (MII or Reverse MII), and U-Boot environment offset and size in flash. The memory controller configuration you can extract from the original bootloader image (brnboot) with the script written by Luka (lantiq_ram_extract_magic.awk).