Porting guide ar71xx to ath79?

Yes thank you, I had misnamed the SOC variable in the generic.mk file in the old style as ATH_SOC

Guys please tell me, is that I came across?

I'm looking at ath79 for DIR-825 B1 routers as I need the "fat" images.

Have a question around MAC addresses.

DIR-825 B1, DIR-825 C1 and DIR-835 A1 exhibit behaviour below. Challenge is MAC addresses is in caldata in a non-standard (ASCII) format.

When in boot cycle is the eth0 MAC set, and where should it be adjusted if need be?
/etc/ board.d/02_network?

In ar71xx the eth0 interface is set up with a valid MAC. Like this:

root@OpenWrt:/etc/board.d# ifconfig -a | grep HW
br-lan    Link encap:Ethernet  HWaddr 84:C9:B2:6A:2D:B8  
eth0      Link encap:Ethernet  HWaddr 84:C9:B2:6A:2D:B8  
eth0.1    Link encap:Ethernet  HWaddr 84:C9:B2:6A:2D:B8  
eth1      Link encap:Ethernet  HWaddr 84:C9:B2:6A:2D:B9  
wlan0     Link encap:Ethernet  HWaddr 84:C9:B2:6A:2D:B8  
wlan1     Link encap:Ethernet  HWaddr 84:C9:B2:6A:2D:BA  

In ath79:

root@OpenWrt:/etc/board.d# ifconfig -a | grep HW
br-lan    Link encap:Ethernet  HWaddr 84:C9:B2:6A:2D:B8  
eth0      Link encap:Ethernet  HWaddr E6:56:EF:7E:DF:DE  
eth0.1    Link encap:Ethernet  HWaddr 84:C9:B2:6A:2D:B8  
eth1      Link encap:Ethernet  HWaddr 84:C9:B2:6A:2D:B9  
wlan0     Link encap:Ethernet  HWaddr 84:C9:B2:6A:2D:B8  
wlan1     Link encap:Ethernet  HWaddr 84:C9:B2:6A:2D:BA  

This may just be cosmetic as router works. I'd rather fix it.

Someone posted above or another thread a fix. I don't think this is the way to go, or if so where to put it:

root@OpenWrt:/etc/board.d# ifconfig eth0 down
root@OpenWrt:/etc/board.d# ifconfig eth0 hw ether 84:C9:B2:6A:2D:B8
root@OpenWrt:/etc/board.d# ifconfig eth0 up
root@OpenWrt:/etc/board.d# /etc/init.d/network restart

Any pointers please?

The problem seems to be that MAC addresses are in a weird format in the caldata. Random addresses are picked by the kernel when booting. AR71xx had code in the kernel to find the right MAC.

The problem is mostly solved in user space by /etc/ board.d/02_network . That updates the MAC for WAN (eth1?) and LAN (eth0.1). Unfortunately it leaves the physical interface up with the bogus MAC.

If guess the preference would be to deal with this in user space as there are only three boards with this issue. I'll see if I can come with a nice hack for these boards to use the proper MAC.

When during the boot process are MAC addresses adjusted? Anybody know? Only in 02-network? When is br-lan created? When is /etc/config/network parsed?

Any suggestions are welcome.

So I keep learning what not to do.

When and how is /etc/config/network created? preinit?

Need something like this added:

config device 'lan_eth0_dev'
        option name 'eth0'
        option macaddr '84:c9:b2:6a:2d:b8'

This for dir-825-B1, dir-825-C1, dir-835-A1.

So again... preinit? Is this process customized by /etc/ board.d/02_network somehow? There are already scripts in /lib/functions that deal with getting the MAC so the hard part is done. Just need to learn how to extend the process that creates /etc/config/network to begin with.

I am trying to port Mikrotik RB962UiGS (hAP ac) ar71xx to ath79, and would like a little help understanding a few things.

How do I find out:

  • What (if any) MDIO reg (phy?) is used by the hardware?
    • Some qca9558 + qca8337 devices use switch on reg 0, 0x10, 0x1f?
    • Do the switch ports use: internal, or SoC phy for each port?
    • SFP uses which phy, or none?

I cannot read the qca32bit switch registers from my OpenWRT build: get 0xffffffff for any address. Guessing I have something wrong in my DTS?
I used busybox devmem, and phytool to read the SoC and switch registers on rooted vendor firmware.

Are ath10k gpios working? Using the syntax from RB922UAGS, I cannot get it to work: only see the SoC gpiochip.

How do I disable the ath9k led, or do I ignore it?

root@OpenWrt:~# ls -l /sys/class/leds/
lrwxrwxrwx    1 root     root             0 Jul 16 08:19 ath10k-phy0 -> ../../devices/pci0000:00/0000:00:00.0/leds/ath10k-phy0
lrwxrwxrwx    1 root     root             0 Jul 16 08:19 ath9k-phy1 -> ../../devices/platform/ahb/18100000.wmac/leds/ath9k-phy1
lrwxrwxrwx    1 root     root             0 Jan  1  1970 mikrotik:white:sfp -> ../../devices/platform/leds/leds/mikrotik:white:sfp

SFP i2c works, & module is detected.
The GPIO pins mod-def0, tx-disable, and loss of signal look correct, and are working, but the interface stays eth1: <NO-CARRIER, and the driver does not turn off tx-disable.
At one stage, before I had the switch working, I had SFP working. Lost that config.
I cannot seem to rename the interface with a DTS label; eth1, mdio1, or the SFP ethernet-phy?

Any help would be appreciated,

try following configuration for the switch (converted from mach-rbspi.c in ar71xx):

&mdio0 {
	status = "okay";

	phy-mask = <0>;

	phy0: ethernet-phy@0 {
		reg = <0>;

		qca,ar8327-initvals = <
			0x04 0x07600000 /* PORT0 PAD MODE CTRL */
			0x50 0xc737c737 /* LED_CTRL0 */
			0x54 0x00000000 /* LED_CTRL1 */
			0x58 0x00000000 /* LED_CTRL2 */
			0x5c 0x0030c300 /* LED_CTRL3 */
			0x7c 0x0000007e /* PORT0 STATUS */

&eth0 {
	status = "okay";

	phy-handle = <&phy0>;
	pll-data = <0xae000000 0xa0000101 0xa0001313>;

	gmac-config {
		device = <&gmac>;
		rgmii-enabled = <1>;


		ucidef_add_switch "switch0" \
			"0@eth0" "2:lan" "3:lan" "4:lan" "5:lan" "1:wan"

The LED ath9k-phy1 can be ignored.

Thank you musashino!

I got the qca8k upstream DSA driver working before I tried the ar8216/8237 driver.
Would the old driver be preferred?

For the pll-data, I believe the first value is for gigabit connection, and the switch-SoC link is forced gigabit? If this is the case, only the first value matters for this eth?

I read this from vendor firmware as 0x8f000000 (from devmem 0x18050028).

I read these switch register values from vendor firmware, but have not checked the settings differences. Some of the values do not match the datasheet (a 0 reserved bit set as 1 in two places).

Vendor qca8337 register values:
0x04 0x7400000
0x08 0x1000000
0x0c 0x0
0x10 0x40000000 //1<<30 reserved 0.

0x50 0xc731c731
0x54 0xc731c731
0x58 0xc731c731
0x5c 0x3ffff00 //switch default

0x7c 0x7e
0x94 0x280

0x9c 0xa

0xe0 0xc70164c0 (default)


Currently no device in target ath79 with ar8337 does use the qca8k dsa driver.
I think there is no real preference which one to use, but qca8k currently does only support the ar8337 switch and only one cpu port.
The old driver does support all ath79 SoC internal and the external ar8237/ar8337 switches.

I've tried also to get qca8k working on some ar8337 gigabit devices, but without success so far.
I'm interested to see your port on the mailing list or as GitHub PR. :grinning:

I'm also interested in seeing your approach for qca8k

According to:


the first value is for 1000Mbit and you are right if the link is fixed to 1000M.


My Hapac work-in-progress is here:
I started the qca8k segment from the Linux rb3011 DTS.

Some more vendor firmware finds:

  • With a fibre SFP, only uses tx-disable when the interface is disabled in software (vendor seems to have laser on even when no cable / link).
  • The buzzer/beeper allows for frequency selection. GPIO4 flickers when beeper is making noise.


Your dts looks like a lot of work. :grimacing:

Many thanks for your qca8k example.
Do you know if qca8k does support flow offloading or something similar?

Your dts looks like a lot of work.

Yes, my DTS is quite a mess while I work out what I am doing. Any suggestions are welcome!

qca8k does support flow offloading or something similar?

The initial qca8k commit said:
Most of the extra callbacks of the DSA subsystem are already supported, such as bridge offloading, stp, fdb.

It looks to me like no vlan filtering support yet?:

I will try to test the qca8k DSA usage a little more


1 Like

If anyone has any ideas for rb962 / Hap ac SFP support, that would be great!

Hi @adron, did you ever get the rb962 SFP working?

I have found that SFP can work, with these settings:

  • fixed-link in eth1:
    otherwise, eth1 shows NO-CARRIER for mdio1 reg 0..11
    The OEM firmware does detect the optic link active / inactive change.
  • do not use tx-disable-gpios
    because the link is not detected tx-disable is always held on
  • once the router has booted, power cycle the other end of the SFP link

OEM firmware:

dmesg | grep eth5
eth5: open
eth5: reset unit 1 (phy -1, mii divider 2, preamble 0) mdio_reset:1
eth5: do sgmii reset
eth5: sgmii max resets limit reached
eth5: phy link up (1000/full)
device eth5 entered promiscuous mode
eth5: phy link down
device eth5 left promiscuous mode
eth5: phy link up (1000/full)
device eth5 entered promiscuous mode

./ethtool-mips eth5
Settings for eth5:
	Supported ports: [ ]
	Supported link modes:   Not reported
	Supported pause frame use: No
	Supports auto-negotiation: Yes
	Supported FEC modes: Not reported
	Advertised link modes:  Not reported
	Advertised pause frame use: No
	Advertised auto-negotiation: No
	Advertised FEC modes: Not reported
	Speed: 1000Mb/s
	Duplex: Full
	Port: FIBRE
	PHYAD: 255
	Transceiver: internal
	Auto-negotiation: on
	Link detected: yes


I'm trying to port CF-E375AC from the ar71xx match files but I'm struggling with the switch device. The kernel acknowledge events such as cables being plug to interfaces but I couldn't make the connectivity for the ports works (ping on lan port or get and dhcp at the wan port). If anyone has some suggestions I've setup an initial PR here

for me the bootlog seems fine from initram at least

   Image Name:   MIPS OpenWrt Linux-5.4.52
   Created:      2020-08-14  15:04:02 UTC
   Image Type:   MIPS Linux Kernel Image (lzma compressed)
   Data Size:    4711555 Bytes =  4.5 MB
   Load Address: 80060000
   Entry Point:  80060000
   Verifying Checksum at 0x81000040 ...OK
   Uncompressing Kernel Image ... OK
No initrd
## Transferring control to Linux (at address 80060000) ...
## Giving linux memsize in bytes, 134217728

Starting kernel ...

[    0.000000] Linux version 5.4.52 (joao@joao-Elcomasv-01) (gcc version 8.4.0 (OpenWrt GCC 8.4.0 r14176+1-bda1c12)) #0 Fri Aug 14 15:04:02 2020
[    0.000000] printk: bootconsole [early0] enabled
[    0.000000] CPU0 revision is: 00019750 (MIPS 74Kc)
[    0.000000] MIPS: machine is COMFAST CF-E375AC
[    0.000000] SoC: Qualcomm Atheros QCA956X ver 1 rev 0
[    0.000000] Initrd not found or empty - disabling initrd
[    0.000000] Primary instruction cache 64kB, VIPT, 4-way, linesize 32 bytes.
[    0.000000] Primary data cache 32kB, 4-way, VIPT, cache aliases, linesize 32 bytes
[    0.000000] Zone ranges:
[    0.000000]   Normal   [mem 0x0000000000000000-0x0000000007ffffff]
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x0000000000000000-0x0000000007ffffff]
[    0.000000] Initmem setup node 0 [mem 0x0000000000000000-0x0000000007ffffff]
[    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 32480
[    0.000000] Kernel command line: console=ttyS0,115200n8 rootfstype=squashfs,jffs2
[    0.000000] Dentry cache hash table entries: 16384 (order: 4, 65536 bytes, linear)
[    0.000000] Inode-cache hash table entries: 8192 (order: 3, 32768 bytes, linear)
[    0.000000] Writing ErrCtl register=00000000
[    0.000000] Readback ErrCtl register=00000000
[    0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
[    0.000000] Memory: 114708K/131072K available (4766K kernel code, 190K rwdata, 1108K rodata, 8776K init, 196K bss, 16364K reserved, 0K cma-reserved)
[    0.000000] SLUB: HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
[    0.000000] NR_IRQS: 51
[    0.000000] random: get_random_bytes called from start_kernel+0x32c/0x518 with crng_init=0
[    0.000000] CPU clock: 775.000 MHz
[    0.000000] clocksource: MIPS: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 4932285024 ns
[    0.000007] sched_clock: 32 bits at 387MHz, resolution 2ns, wraps every 5541893118ns
[    0.008215] Calibrating delay loop... 385.02 BogoMIPS (lpj=770048)
[    0.046714] pid_max: default: 32768 minimum: 301
[    0.051702] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes, linear)
[    0.059419] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes, linear)
[    0.071332] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns
[    0.081642] futex hash table entries: 256 (order: -1, 3072 bytes, linear)
[    0.088935] pinctrl core: initialized pinctrl subsystem
[    0.095354] NET: Registered protocol family 16
[    0.130459] clocksource: Switched to clocksource MIPS
[    0.136890] NET: Registered protocol family 2
[    0.142190] tcp_listen_portaddr_hash hash table entries: 512 (order: 0, 4096 bytes, linear)
[    0.151067] TCP established hash table entries: 1024 (order: 0, 4096 bytes, linear)
[    0.159163] TCP bind hash table entries: 1024 (order: 0, 4096 bytes, linear)
[    0.166608] TCP: Hash tables configured (established 1024 bind 1024)
[    0.173430] UDP hash table entries: 256 (order: 0, 4096 bytes, linear)
[    0.180370] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes, linear)
[    0.188026] NET: Registered protocol family 1
[    0.192668] PCI: CLS 0 bytes, default 32
[    0.329420] workingset: timestamp_bits=14 max_order=15 bucket_order=1
[    0.342278] squashfs: version 4.0 (2009/01/31) Phillip Lougher
[    0.348464] jffs2: version 2.2 (NAND) (SUMMARY) (LZMA) (RTIME) (CMODE_PRIORITY) (c) 2001-2006 Red Hat, Inc.
[    0.373996] pinctrl-single 1804002c.pinmux: 544 pins, size 68
[    0.381064] Serial: 8250/16550 driver, 1 ports, IRQ sharing disabled
[    0.388428] printk: console [ttyS0] disabled
[    0.393015] 18020000.uart: ttyS0 at MMIO 0x18020000 (irq = 9, base_baud = 1562500) is a 16550A
[    0.402117] printk: console [ttyS0] enabled
[    0.402117] printk: console [ttyS0] enabled
[    0.411176] printk: bootconsole [early0] disabled
[    0.411176] printk: bootconsole [early0] disabled
[    0.436821] spi-nor spi0.0: w25q128 (16384 Kbytes)
[    0.441833] 4 fixed-partitions partitions found on MTD device spi0.0
[    0.448407] Creating 4 MTD partitions on "spi0.0":
[    0.453370] 0x000000000000-0x000000040000 : "u-boot"
[    0.459381] 0x000000040000-0x000000050000 : "art"
[    0.465093] 0x000000050000-0x000000ff0000 : "firmware"
[    0.473781] 2 uimage-fw partitions found on MTD device firmware
[    0.479950] Creating 2 MTD partitions on "firmware":
[    0.485104] 0x000000000000-0x000000160000 : "kernel"
[    0.491061] 0x000000160000-0x000000fa0000 : "rootfs"
[    0.497018] mtd: device 4 (rootfs) set to be root filesystem
[    0.504614] 1 squashfs-split partitions found on MTD device rootfs
[    0.511062] 0x000000a30000-0x000000fa0000 : "rootfs_data"
[    0.517463] 0x000000ff0000-0x000001000000 : "art-backup"
[    0.525564] libphy: Fixed MDIO Bus: probed
[    1.138451] random: fast init done
[    1.178833] libphy: ag71xx_mdio: probed
[    1.204951] switch0: Atheros AR8337 rev. 2 switch registered on mdio.0
[    1.793944] ag71xx 19000000.eth: connected to PHY at mdio.0:00 [uid=004dd036, driver=Atheros AR8216/AR8236/AR8316]
[    1.805222] eth0: Atheros AG71xx at 0xb9000000, irq 4, mode: mii
[    1.811670] i2c /dev entries driver
[    1.815479] ath79-wdt 18060008.wdt: unable to register misc device, err=-16
[    1.822727] ath79-wdt: probe of 18060008.wdt failed with error -16
[    1.830793] NET: Registered protocol family 10
[    1.839819] Segment Routing with IPv6
[    1.843754] NET: Registered protocol family 17
[    1.848425] 8021q: 802.1Q VLAN Support v1.8
[    1.853473] PCI host bridge /ahb/pcie-controller@18250000 ranges:
[    1.859839]  MEM 0x0000000012000000..0x0000000013ffffff
[    1.865245]   IO 0x0000000000000000..0x0000000000000000
[    1.870807] PCI host bridge to bus 0000:00
[    1.875076] pci_bus 0000:00: root bus resource [mem 0x12000000-0x13ffffff]
[    1.882186] pci_bus 0000:00: root bus resource [io  0x0000]
[    1.887948] pci_bus 0000:00: root bus resource [??? 0x00000000 flags 0x0]
[    1.894961] pci_bus 0000:00: No busn resource found for root bus, will use [bus 00-ff]
[    1.903177] pci 0000:00:00.0: [168c:0056] type 00 class 0x028000
[    1.909439] pci 0000:00:00.0: reg 0x10: [mem 0x00000000-0x001fffff 64bit]
[    1.916581] pci 0000:00:00.0: PME# supported from D0 D3hot
[    1.923134] pci_bus 0000:00: busn_res: [bus 00-ff] end is updated to 00
[    1.929998] pci 0000:00:00.0: BAR 0: assigned [mem 0x12000000-0x121fffff 64bit]
[    1.986861] Freeing unused kernel memory: 8776K
[    1.991572] This architecture does not have kernel memory protection.
[    1.998229] Run /init as init process
[    2.015076] init: Console is alive
[    2.018917] init: - watchdog -
[    2.041215] kmodloader: loading kernel modules from /etc/modules-boot.d/*
[    2.059999] usbcore: registered new interface driver usbfs
[    2.065785] usbcore: registered new interface driver hub
[    2.071382] usbcore: registered new device driver usb
[    2.082221] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[    2.090531] ehci-fsl: Freescale EHCI Host controller driver
[    2.097796] ehci-platform: EHCI generic platform driver
[    2.105381] kmodloader: done loading kernel modules from /etc/modules-boot.d/*
[    2.114141] init: - preinit -
[    2.366398] random: jshn: uninitialized urandom read (4 bytes read)
[    2.475600] random: jshn: uninitialized urandom read (4 bytes read)
[    2.609304] random: jshn: uninitialized urandom read (4 bytes read)
[    2.894292] eth0: link up (1000Mbps/Full duplex)
[    2.905192] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
Press the [f] key and hit [enter] to enter failsafe mode
Press the [1], [2], [3] or [4] key and hit [enter] to select the debug level
[    3.906961] Atheros AR8216/AR8236/AR8316 mdio.0:00: Port 2 is up
[    7.038186] eth0: link down
[    7.051663] procd: - early -
[    7.054794] procd: - watchdog -
[    7.607192] procd: - watchdog -
[    7.610758] procd: - ubus -
[    7.620491] urandom_read: 5 callbacks suppressed
[    7.620498] random: ubusd: uninitialized urandom read (4 bytes read)
[    7.664053] random: ubusd: uninitialized urandom read (4 bytes read)
[    7.671961] procd: - init -
Please press Enter to activate this console.
[    8.136162] kmodloader: loading kernel modules from /etc/modules.d/*
[    8.169668] Loading modules backported from Linux version v5.8-0-gbcf876870b95
[    8.177183] Backport generated by backports.git v5.8-1-0-g79400d9e
[    8.237692] xt_time: kernel timezone is -0000
[    8.367381] PPP generic driver version 2.4.2
[    8.383295] NET: Registered protocol family 24
[    8.407579] urngd: v1.0.2 started.
[    8.457370] ath10k 5.4 driver, optimized for CT firmware, probing pci device: 0x56.
[    8.465432] ath10k_mac_create, priv_size: 804  hw: (ptrval)  hw->priv: (ptrval)
[    8.495126] ath10k_pci 0000:00:00.0: enabling device (0000 -> 0002)
[    8.501919] ath10k_pci 0000:00:00.0: pci irq legacy oper_irq_mode 1 irq_mode 0 reset_mode 0
[    8.590977] random: crng init done
[   10.569410] ath10k_pci 0000:00:00.0: qca9888 hw2.0 target 0x01000000 chip_id 0x00000000 sub 0000:0000
[   10.578993] ath10k_pci 0000:00:00.0: kconfig debug 0 debugfs 1 tracing 0 dfs 1 testmode 0
[   10.599004] ath10k_pci 0000:00:00.0: firmware ver 10.4b-ct-9888-fW-13-8c5b2baa2 api 5 features mfp,peer-flow-ctrl,txstatus-noack,wmi-10.x-CT,ratemask-CT,regdump-CT,3
[   11.029676] ath10k_pci 0000:00:00.0: board_file api 2 bmi_id 0:16 crc32 f228337a
[   13.066449] ath10k_pci 0000:00:00.0: unsupported HTC service id: 1536
[   13.076838] ath10k_pci 0000:00:00.0: 10.4 wmi init: vdevs: 16  peers: 48  tid: 96
[   13.084611] ath10k_pci 0000:00:00.0: msdu-desc: 2500  skid: 32
[   13.135788] ath10k_pci 0000:00:00.0: wmi print 'P 48/48 V 16 K 144 PH 176 T 186  msdu-desc: 2500  sw-crypt: 0 ct-sta: 0'
[   13.147096] ath10k_pci 0000:00:00.0: wmi print 'free: 114572 iram: 12804 sram: 29508'
[   13.415424] ath10k_pci 0000:00:00.0: htt-ver 2.2 wmi-op 6 htt-op 4 cal pre-cal-file max-sta 32 raw 0 hwcrypto 1
[   13.595130] ieee80211 phy1: Atheros AR9561 Rev:0 mem=0xb8100000, irq=2
[   13.630855] kmodloader: done loading kernel modules from /etc/modules.d/*
[   28.865761] eth0: link up (1000Mbps/Full duplex)
[   28.878770] br-lan: port 1(eth0.2) entered blocking state
[   28.884396] br-lan: port 1(eth0.2) entered disabled state
[   28.890284] device eth0.2 entered promiscuous mode
[   28.895289] device eth0 entered promiscuous mode
[   28.901217] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
[   28.927974] br-lan: port 1(eth0.2) entered blocking state
[   28.933597] br-lan: port 1(eth0.2) entered forwarding state
[   29.890552] IPv6: ADDRCONF(NETDEV_CHANGE): br-lan: link becomes ready

In some cases I think the eth0 and eth1 got switched around. Be careful about how you're composing the DTS tree, at least with respect to the old ar71xx mach.

This happened with a lot of AR9331-based SoCs.

Thanks for the feedback.
When I move the ethernet cable between lan and wan port the kernel lists them correctly with link up/down messages.

I made some progress after opening the PR for the CF-E375AC. I'm still seeing these messages on my bootlog indicating that something is wrong with the watchdog timer. Could this be something wrong with my wdt node at DTS?

The first boot after flash also has these messages about the filesystem marker found at 0x0

[ 32.951236] jffs2_scan_eraseblock(): End of filesystem marker found at 0x0
[ 32.972862] jffs2_build_filesystem(): unlocking the mtd device...

From what I could poke around all the partitions seem to be working fine. But I'm not sure I should see the of the fs at 0x0.

Any help with any of these two topics would be much appreciated.

ar71xx has now been removed from OpenWrt master.