Adding OpenWrt support for Extreme Network AP3935i

Hy,

I have an AP3935i from Extreme Networks, but this enterprise AP does not work without a controller.
So I am trying to get openwrt to work with it.

Extreme Networks WS-AP3935i-ROW

https://fccid.io/QXO-4411AC/User-Manual/Users-Manual-2843888
SoC: IPQ8068 QYY AT46279K45060I
RAM: NANYA 1527 NT5CC256M16DP-DI 515073W0EF 7 TW
FLASH: MXIC X150506 MX30UF4G28AB-XKI 8B634907B5
LAN: Atheros AR8035-A J5150WL 1515 CN
LAN2: Atheros AR8033-AL1A SKCSR.AJ1 1444 China
WLAN2: QCA9990 OVV FNPV209 K451406
WLAN5: QCA9990 OVV FNPV209 K451406
SERIAL: RS232 Port (115200 8n1) Cisco console cable and 4pin Serial Header 3,3 ? ? ?

Collected Relavant data

oem.bootlog and uboot printenv https://pastebin.com/hMxerpeS
https://ibb.co/41VHsfS
https://ibb.co/FH1zTMv

The serial console RJ45 port on the back is Cisco compatible (115200 8n1)
The boot process can be interrupted.
I noted the chips from the pictures from FCC. The most matching already supported devices are
Edgecore ECW5410 and AP148

Boot (BAK)-> set serverip 192.168.1.66
Boot (BAK)-> set ipaddr 192.168.1.10
Boot (BAK)-> tftpboot openwrt-ipq806x-generic-edgecore_ecw5410-initramfs-fit-uImage.itb
Full duplex link
Link 0 up, Phy_status = bc50
Port:0 speed 1000Mbps
Using eth0 device
TFTP from server 192.168.1.66; our IP address is 192.168.1.10
Filename 'openwrt-ipq806x-generic-edgecore_ecw5410-initramfs-fit-uImage.itb'.
Load address: 0x44000000
Loading: *#################################################################
	 #################################################################
	 #################################################################
	 #################################################################
	 #################################################################
	 #################################################################
	 #################################################################
	 #################################################################
	 ##################
done
Bytes transferred = 7887988 (785c74 hex)
Boot (BAK)-> bootm
## Booting kernel from FIT Image at 44000000 ...
   Using 'config@v2.0-ap160' configuration
   Trying 'kernel@1' kernel subimage
     Description:  ARM OpenWrt Linux-5.4.91
     Type:         Kernel Image
     Compression:  gzip compressed
     Data Start:   0x440000e4
     Data Size:    7855945 Bytes = 7.5 MiB
     Architecture: ARM
     OS:           Linux
     Load Address: 0x42208000
     Entry Point:  0x42208000
     Hash algo:    crc32
     Hash value:   5c061fe0
     Hash algo:    sha1
     Hash value:   c46d016a230f1505aa5a26458a2ca850f61ee251
   Verifying Hash Integrity ... crc32+ sha1+ OK
   Uncompressing Kernel Image ... OK
Setting up atags for msm partition: nand_flash

device nand1 <nand1>, # parts = 13
 #: name		size		offset		mask_flags
 0: CFG1                0x00010000	0x002a0000	0
 1: BootPRI             0x00080000	0x002b0000	0
 2: CFG2                0x00010000	0x00330000	0
 3: NVRAM1              0x00010000	0x00340000	0
 4: NVRAM2              0x00010000	0x00350000	0
 5: NVRAM3              0x00010000	0x00360000	0
 6: NVRAM4              0x00010000	0x00370000	0
 7: NVRAM5              0x00010000	0x00380000	0
 8: NVRAM6              0x00010000	0x00390000	0
 9: NVRAM7              0x00010000	0x003a0000	0
10: NVRAM8              0x00010000	0x003b0000	0
11: PriImg              0x00e10000	0x003c0000	0
12: SecImg              0x00e10000	0x011d0000	0

active partition: nand1,0 - (CFG1) 0x00010000 @ 0x002a0000

defaults:
mtdids  : nand1=nand1
mtdparts: mtdparts=nand1:64k@2688k(CFG1),512k(BootPRI),64k(CFG2),64k(NVRAM1),64k(NVRAM2),64k(NVRAM3),64k(NVRAM4),64k(NVRAM5),64k(NVRAM6),64k(NVRAM7),64k(NVRAM8),14400k(PriImg),14400k(SecImg)
Setting up atags for msm partition: CFG1
Setting up atags for msm partition: BootPRI
Setting up atags for msm partition: CFG2
Setting up atags for msm partition: NVRAM1
Setting up atags for msm partition: NVRAM2
Setting up atags for msm partition: NVRAM3
Setting up atags for msm partition: NVRAM4
Setting up atags for msm partition: NVRAM5
Setting up atags for msm partition: NVRAM6
Setting up atags for msm partition: NVRAM7
Setting up atags for msm partition: NVRAM8
Setting up atags for msm partition: PriImg
Setting up atags for msm partition: SecImg
Using machid 0x1260 from environment

Starting kernel ...

My problem is that I don't get further than "starting kernel" with initramfs from AP148 or edgecore_ecw5410 image.
There is also an 4-pin serial header on the board. In Stock boot process I noted "console=ttyHSL0,115200n81" but in other images "" console=ttyMSM0,115200n8 root=/dev/ubiblock0_1";"
Is AP148 or edgecore_ecw5410 the better start point for my own DTS file?

Looks like an interesting device! I have bid on one on eBay as I am interested in giving it a try :slight_smile:

Have you tried to extract the factory DTS from the existing kernel image ?

TP-LINK Archer C2600 seems to also use the AP148 DTS based on the kernel output, so you could try that DTS too for something similar, but if you could extract the factory DTS, that'll probably be your best starting point.

Also, the SSH user/password should be admin/new2day if you can try and access any info from the CLI

hy, can you tell me how to do this? maybe do you have a link?

What commands are available over uboot? (help should show you) Can you use md (memory display) to look at the kernel image ?

Have a look at https://github.com/gmbnomis/uboot-mdb-dump

Essentially use some serial application (miniterm / minicom / realterm or whatever) and capture the serial output to file, and then do md to see the kernel image as hex, and then use the uboot-mdb-dump tool above to turn that into the binary form of it.

Once you have the binary kernel, you can use binwalk or use a dtb extraction tool such as https://github.com/PabloCastellano/extract-dtb

Once you have the dtb (the binary form) you can convert into source using

dtc -I dtb -O dts filename.dtb

Managed to buy one of these for AU$30 (using an AfterPay voucher code), so hopefully by the time it arrives at my doorstep you'll have OpenWRT running on it already!

devicetree decompilation is a nice trick, but in this situation it is a lot of effort and not necessary.

I would recommend simply opening the case, removing the shields (the very thin metal lids), taking and sharing some pictures and the FCC ID, and recording chip models

and from there you find a similar DTS in openwrt and copy it and make the necessary edits

if you do a very smooth job with removing the shields, they can be put back on

I received my device, it's a very heavy AP!

In any case, looking at the dmesg, it shows:

msm_serial_hs.0: ttyHS0 at MMIO 0x12490000 (irq = 227) is a MSM HS UART
msm_serial_hs module loaded
msm_serial_hsl: detected port #0
msm_serial_hsl.0: ttyHSL0 at MMIO 0x16640000 (irq = 190) is a MSM
msm_serial_hsl: console setup on port #0
console [ttyHSL0] enabled

So, it looks like we need serial active on 0x16640000, which hopefully maps to the RJ45 console.

I am trying to build something for the device, and am using:

&gsbi7 {
	status = "okay";

	gsbi7_serial: serial@16640000 {
		status = "okay";
	};
};

So hopefully that'll solve the serial issue.

I tried to extract the dts from the dtb, but it complains about invalid format...

The onboard serial is 3.3V (at pin1 marked with triangle), gnd, rx, tx

But it also just hangs at Starting kernel...

Perhaps there is something wrong with the dts compatible line...

OK, have it booting now, and WIP patch at https://github.com/dmascord/openwrt/tree/add_ap3935i

2 Likes

sysupgrade is working, now to work on the LEDs.

3 Likes

Hi Fellows,

I'm trying to get an access to 3935i through the putty by using serial port with configuration 115200, bits 8-1, parity none, flow control Xon Xoff, but nothing isn't going.

Is this configuration right? Or what should I do for having the access?

Thanks in advance

no parity and no flow control

if this board is similar to other models (AP3805i and EAP1200H)
it is likely that the RX line (pin 4) is connected to ground with a resistor

(see Adding OpenWrt support for Extreme Network AP3805i - #46 by akornow)

It is also possible that serial console is simply blocked by the software (and by software, it could be either pin muxing registers or missing "console=" in kernel command line), in which case the workaround is to downgrade the firmware and enable SSH

(see Adding OpenWrt support for Extreme Network AP3805i - #66 by akornow)

before you modify the board, you should share pictures of your board (or just tell us the FCC ID so we can look up pictures). You should verify the board designs are the same before ripping off any resistors.

(nevermind dont start a new post)

Hello,

I'm trying to compile your repository but when I start make config I'm not sure which target system/subtarget/image to choose to be able to select AP3935i. Can you tell us which categories/subcategories to choose to be able to list AP3935i?

I'm new to openWRT and I wanted to prepare bin firmware so I can try to flash my device.

Thank in advance.

ipq806x.

1 Like

hy,
I am trying to flash one ap3935i accesspoint, but it does not work.
After sysupgrade it always boots the default image again.
Any Idea what is wrong?

Hy,
I found it out myself :smiley:
I compared the printenv output and found some differences

BOOT_BOOTROM="U-Boot 2012.07.9 (Dec 17 2015 - 10:28:35)"
BOOT_BOOTROM="U-Boot 2012.07.7-r038300217.1 (Sep 29 2015 - 11:41:04)"

CURR_VER=U-Boot 2012.07.9 (Dec 17 2015 - 10:28:35) (primary)
CURR_VER=U-Boot 2012.07.9 (Feb 09 2016 - 11:55:24) (primary)

HW_RELEASE=502
HW_RELEASE=508

MOSTRECENTKERNEL=1
MOSTRECENTKERNEL=0

After
set MOSTRECENTKERNEL 0

it boots the openwrt image!

Bought the same AP. by chance. Can you share a compiled image for this AP?

Thanks a lot! Did you changed the bootloader or just flashed it as a new image and "swapimg" to it?

I made exact what @dmascord wrote in his commit

on a second device I needed to change MOSTRECENTKERNEL=1 to
MOSTRECENTKERNEL=0
to make the device boot openwrt