SFT 1200 OPAL openwrt vesion

The hardware was ordered for me by a private user reading this forum, it arrived in a local DHL branch yesterday and I’m going to collect it today. Thank you anyway.

The patch series got superseded by a newer series which is now waiting for merge in in upstream Linux:

5 Likes

I got the switch working fine. What’s missing by now for the SFT-1200 to be fully supported is:

  • WiFi driver
    • source has been leaked by SinoVoip apparently, see BPI-WiFi5-Siflower/openwrt-18.06/package/kernel/sf_smac at main · BPI-SINOVOIP/BPI-WiFi5-Siflower · GitHub
    • This kernel module has been compiled against the Linux kernel and uses plenty of Linux kernel symbols => we can safely assume it is covered by GPLv2 by contamination
    • driver needs to be adapted to use NVMEM instead of proprietary special module for accessing factory/EEPROM data
    • WiFi firmware blobs need to be published under a license which allow redistribution (or users will have to obtain blobs manually and copy them onto the device for WiFi to work)
  • driver for ET6326 LED controller connected via I2C
  • routing performance will be limited by software fastpath as there is no support for hardware NAT/routing offloading (expect ~ 200MBit/s IPv4 NAT routing performance)

Bootlog

Booting...
IROM DONE!
SiFlower SFAX8 Bootloader (Apr 11 2024 - 15:32:29)
ddr3 sgg64m16v init start
MEM_PHY_CLK_DIV = 0x1
setting extended temperature
DDR training success
now ddr frequency is 533MHz!!!
ddr test
DR1BW a0000000 OK
DR1BR OK
DR2BW a0000000 OK
DR2BR OK
DR4BW a0000000 OK
DR4BR OK
DR8BW a0000000 OK
DR8BR OK
Boot from spi-nand
SPI-NAND got mfr_id: c8, dev_id: 51
U-image: U-Boot 2016.07-rc2 for sfa28_gl, size is 354797
loaded - jumping to U-Boot 0xa0000000...


U-Boot 2016.07-rc2 (Apr 11 2024 - 15:32:32 +0800)

Board: MIPS sfa18 A28 FULLMASK glt1200
       Watchdog enabled
DRAM:  128 MiB
*** Warning - bad CRC, using default environment

In:    serial@8300000
Out:   serial@8300000
Err:   serial@8300000
Net:   Registering sfa18 gmac
read version 0x1037
trigger eswitch hw reset, gpio:0
End intel_rgmii_init
sf_eth1
Warning: sf_eth1 (eth0) using random MAC address - 56:2b:3f:41:8b:d7

Setting bus to 0
Reset button is pressed for:  5 4  3  2  1  0 
HTTP server is starting at IP: 192.168.1.1
done set host addr 0xa8c0 0x101
HTTP server is ready!

now vlan tag is 3
## Error: HTTP ugrade failed!


Abort
httpd failed; host 192.168.1.1 is not alive
Hit 'gl' to stop autoboot:  2  1 
sfa28 # tftpboot 0x82000000
*** Warning: no boot file name; using 'C0A80101.img'
Using sf_eth1 device
TFTP from server 192.168.1.2; our IP address is 192.168.1.1
Filename 'C0A80101.img'.
Load address: 0x82000000
Loading: *#################################################################
	 #################################################################
	 #################################################################
	 #################################################################
	 #################################################################
	 #################################################################
	 ##########################
	 10.6 MiB/s
done
Bytes transferred = 6093863 (5cfc27 hex)
sfa28 # bootm
## Booting kernel from Legacy Image at 82000000 ...
   Image Name:   MIPS OpenWrt Linux-6.12.65
   Image Type:   MIPS Linux Kernel Image (lzma compressed)
   Data Size:    6093799 Bytes = 5.8 MiB
   Load Address: 80100000
   Entry Point:  80100000
   Verifying Checksum ... OK
   Uncompressing Kernel Image ... OK
All resets are held!
[    0.000000] Linux version 6.12.65 (daniel@box) (mipsel-openwrt-linux-musl-gcc (OpenWrt GCC 14.3.0 r0+32696-f4c5f96e89) 14.3.0, GNU ld (GNU Binutils) 2.44) #0 SMP Tue Jan 20 15:07:07 2026
[    0.000000] CPU0 revision is: 5301a128 (MIPS interAptiv (multi))
[    0.000000] FPU revision is: 0173a000
[    0.000000] MIPS: machine is GL.iNet GL-SFT1200
[    0.000000] earlycon: pl11 at MMIO 0x18300000 (options '115200n8')
[    0.000000] printk: legacy bootconsole [pl11] enabled
[    0.000000] User-defined physical RAM map overwrite
[    0.000000] Initrd not found or empty - disabling initrd
[    0.000000] OF: reserved mem: 0x01f00000..0x020fffff (2048 KiB) map non-reusable wlandsp@1f00000
[    0.000000] OF: reserved mem: 0x02100000..0x022fffff (2048 KiB) map non-reusable wlandsp@2100000
[    0.000000] VPE topology {2,2} total 4
[    0.000000] Primary instruction cache 16kB, VIPT, 4-way, linesize 32 bytes.
[    0.000000] Primary data cache 16kB, 4-way, VIPT, no aliases, linesize 32 bytes
[    0.000000] MIPS secondary cache 128kB, 8-way, 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] percpu: Embedded 13 pages/cpu s23568 r8192 d21488 u53248
[    0.000000] pcpu-alloc: s23568 r8192 d21488 u53248 alloc=13*4096
[    0.000000] pcpu-alloc: [0] 0 [0] 1 [0] 2 [0] 3 
[    0.000000] Kernel command line: earlycon mem=128M
[    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] Built 1 zonelists, mobility grouping on.  Total pages: 32768
[    0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
[    0.000000] SLUB: HWalign=32, Order=0-3, MinObjects=0, CPUs=4, Nodes=1
[    0.000000] rcu: Hierarchical RCU implementation.
[    0.000000] 	Tracing variant of Tasks RCU enabled.
[    0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 10 jiffies.
[    0.000000] RCU Tasks Trace: Setting shift to 2 and lim to 1 rcu_task_cb_adjust=1 rcu_task_cpu_ids=4.
[    0.000000] NR_IRQS: 256
[    0.000000] rcu: srcu_init: Setting srcu_struct sizes based on contention.
[    0.000000] clocksource: GIC: mask: 0xffffffffffffffff max_cycles: 0xb881274fa3, max_idle_ns: 440795210636 ns
[    0.000005] sched_clock: 64 bits at 800MHz, resolution 1ns, wraps every 4398046511103ns
[    0.008183] clocksource: MIPS: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 4778151116 ns
[    0.017492] Calibrating delay loop... 531.66 BogoMIPS (lpj=2658304)
[    0.083819] pid_max: default: 32768 minimum: 301
[    0.099500] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes, linear)
[    0.106938] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes, linear)
[    0.127517] rcu: Hierarchical SRCU implementation.
[    0.132426] rcu: 	Max phase no-delay instances is 1000.
[    0.138644] Timer migration: 1 hierarchy levels; 8 children per group; 1 crossnode level
[    0.148191] smp: Bringing up secondary CPUs ...
[    0.154335] Primary instruction cache 16kB, VIPT, 4-way, linesize 32 bytes.
[    0.154397] Primary data cache 16kB, 4-way, VIPT, no aliases, linesize 32 bytes
[    0.154418] MIPS secondary cache 128kB, 8-way, linesize 32 bytes.
[    0.154507] CPU1 revision is: 5301a128 (MIPS interAptiv (multi))
[    0.154527] FPU revision is: 0173a000
[    0.268075] Counter synchronization [CPU#0 -> CPU#1]: passed
[    0.307146] Primary instruction cache 16kB, VIPT, 4-way, linesize 32 bytes.
[    0.307206] Primary data cache 16kB, 4-way, VIPT, no aliases, linesize 32 bytes
[    0.307226] MIPS secondary cache 128kB, 8-way, linesize 32 bytes.
[    0.307310] CPU2 revision is: 5301a128 (MIPS interAptiv (multi))
[    0.307330] FPU revision is: 0173a000
[    0.426472] Counter synchronization [CPU#0 -> CPU#2]: passed
[    0.464500] Primary instruction cache 16kB, VIPT, 4-way, linesize 32 bytes.
[    0.464561] Primary data cache 16kB, 4-way, VIPT, no aliases, linesize 32 bytes
[    0.464581] MIPS secondary cache 128kB, 8-way, linesize 32 bytes.
[    0.464668] CPU3 revision is: 5301a128 (MIPS interAptiv (multi))
[    0.464688] FPU revision is: 0173a000
[    0.562817] Counter synchronization [CPU#0 -> CPU#3]: passed
[    0.599299] smp: Brought up 1 node, 4 CPUs
[    0.606133] Memory: 100772K/131072K available (8375K kernel code, 645K rwdata, 1752K rodata, 12580K init, 224K bss, 29236K reserved, 0K cma-reserved)
[    0.626626] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
[    0.636759] futex hash table entries: 1024 (order: 3, 32768 bytes, linear)
[    0.650317] pinctrl core: initialized pinctrl subsystem
[    0.660315] NET: Registered PF_NETLINK/PF_ROUTE protocol family
[    0.667763] FPU Affinity set after 10620 emulations
[    0.675416] Serial: AMBA PL011 UART driver
[    0.710111] pps_core: LinuxPPS API ver. 1 registered
[    0.715211] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <[email protected]>
[    0.724673] PTP clock support registered
[    0.732076] clocksource: Switched to clocksource GIC
[    0.748708] NET: Registered PF_INET protocol family
[    0.754232] IP idents hash table entries: 2048 (order: 2, 16384 bytes, linear)
[    0.762893] tcp_listen_portaddr_hash hash table entries: 512 (order: 0, 4096 bytes, linear)
[    0.771444] Table-perturb hash table entries: 65536 (order: 6, 262144 bytes, linear)
[    0.779476] TCP established hash table entries: 1024 (order: 0, 4096 bytes, linear)
[    0.787383] TCP bind hash table entries: 1024 (order: 2, 16384 bytes, linear)
[    0.794792] TCP: Hash tables configured (established 1024 bind 1024)
[    0.802793] MPTCP token hash table entries: 256 (order: 0, 4096 bytes, linear)
[    0.810578] UDP hash table entries: 256 (order: 1, 8192 bytes, linear)
[    0.817388] UDP-Lite hash table entries: 256 (order: 1, 8192 bytes, linear)
[    0.825869] NET: Registered PF_UNIX/PF_LOCAL protocol family
[    0.837266] workingset: timestamp_bits=14 max_order=15 bucket_order=1
[    0.848577] squashfs: version 4.0 (2009/01/31) Phillip Lougher
[    0.854703] jffs2: version 2.2 (NAND) (SUMMARY) (LZMA) (RTIME) (CMODE_PRIORITY) (c) 2001-2006 Red Hat, Inc.
[    0.919426] loop: module loaded
[    0.936756] NET: Registered PF_INET6 protocol family
[    0.948574] Segment Routing with IPv6
[    0.952728] In-situ OAM (IOAM) with IPv6
[    0.957210] NET: Registered PF_PACKET protocol family
[    0.963742] 8021q: 802.1Q VLAN Support v1.8
[    1.038091] ssp-pl022 18202000.spi: ARM PL022 driver, device ID: 0x00a41022
[    1.045531] ssp-pl022 18202000.spi: mapped registers from 0x18202000 to (ptrval)
[    1.055722] 18300000.serial: ttyAMA0 at MMIO 0x18300000 (irq = 20, base_baud = 0) is a PL011 rev3
[    1.065146] printk: legacy console [ttyAMA0] enabled
[    1.065146] printk: legacy console [ttyAMA0] enabled
[    1.075437] printk: legacy bootconsole [pl11] disabled
[    1.075437] printk: legacy bootconsole [pl11] disabled
[    1.091874] ssp-pl022 18202000.spi: ARM PL022 driver, device ID: 0x00a41022
[    1.099325] ssp-pl022 18202000.spi: mapped registers from 0x18202000 to (ptrval)
[    1.112853] spi-nand spi0.0: GigaDevice SPI NAND was found.
[    1.118579] spi-nand spi0.0: 128 MiB, block size: 128 KiB, page size: 2048, OOB size: 128
[    1.128582] 6 fixed-partitions partitions found on MTD device spi0.0
[    1.135916] Creating 6 MTD partitions on "spi0.0":
[    1.140831] 0x000000000000-0x000000020000 : "spl-loader"
[    1.150863] 0x000000020000-0x000000080000 : "u-boot"
[    1.160651] 0x000000080000-0x0000000a0000 : "u-boot-env"
[    1.169353] 0x0000000a0000-0x0000000c0000 : "factory"
[    1.179034] 0x0000000c0000-0x000007e00000 : "firmware"
[    1.682191] random: crng init done
[    1.942312] 2 uimage-fw partitions found on MTD device firmware
[    1.948324] Creating 2 MTD partitions on "firmware":
[    1.953373] 0x000000000000-0x000000400000 : "kernel"
[    1.960266] 0x000000400000-0x000007d40000 : "ubi"
[    1.967031] 0x000007e00000-0x000007e40000 : "log"
[    1.986162] sf19a2890-gmac 10800000.ethernet: IRQ sfty not found
[    1.995997] sf19a2890-gmac 10800000.ethernet: User ID: 0x10, Synopsys ID: 0x37
[    2.003444] sf19a2890-gmac 10800000.ethernet: 	DWMAC1000
[    2.008786] sf19a2890-gmac 10800000.ethernet: DMA HW capability register supported
[    2.016460] sf19a2890-gmac 10800000.ethernet: RX Checksum Offload Engine supported
[    2.024111] sf19a2890-gmac 10800000.ethernet: COE Type 2
[    2.029452] sf19a2890-gmac 10800000.ethernet: TX Checksum insertion supported
[    2.036734] sf19a2890-gmac 10800000.ethernet: Wake-Up On Lan supported
[    2.043389] sf19a2890-gmac 10800000.ethernet: Enhanced/Alternate descriptors
[    2.050460] sf19a2890-gmac 10800000.ethernet: Enabled extended descriptors
[    2.057441] sf19a2890-gmac 10800000.ethernet: Ring mode enabled
[    2.063444] sf19a2890-gmac 10800000.ethernet: Enable RX Mitigation via HW Watchdog Timer
[    2.210712] UBI: auto-attach mtd6
[    2.214339] ubi0: default fastmap pool size: 45
[    2.218929] ubi0: default fastmap WL pool size: 22
[    2.223837] ubi0: attaching mtd6
[    6.359629] ubi0: scanning is finished
[    6.412967] ubi0 warning: ubi_eba_init: cannot reserve enough PEBs for bad PEB handling, reserved 2, need 20
[    6.425481] ubi0: attached mtd6 (name "ubi", size 121 MiB)
[    6.431062] ubi0: PEB size: 131072 bytes (128 KiB), LEB size: 126976 bytes
[    6.438070] ubi0: min./max. I/O unit sizes: 2048/2048, sub-page size 2048
[    6.444947] ubi0: VID header offset: 2048 (aligned 2048), data offset: 4096
[    6.451929] ubi0: good PEBs: 970, bad PEBs: 0, corrupted PEBs: 0
[    6.457989] ubi0: user volume: 2, internal volumes: 1, max. volumes count: 128
[    6.465273] ubi0: max/mean erase counter: 2/1, WL threshold: 4096, image sequence number: 232816245
[    6.474381] ubi0: available PEBs: 0, total reserved PEBs: 970, PEBs reserved for bad PEB handling: 2
[    6.483650] ubi0: background thread "ubi_bgt0d" started, PID 381
[    6.489143] block ubiblock0_0: created from ubi0:0(rootfs)
[    6.495413] ubiblock: device ubiblock0_0 (rootfs) set to be root filesystem
[    6.503158] clk: Disabling unused clocks
[    6.543992] Freeing unused kernel image (initmem) memory: 12580K
[    6.550091] This architecture does not have kernel memory protection.
[    6.556676] Run /init as init process
[    6.560367]   with arguments:
[    6.563384]     /init
[    6.565676]   with environment:
[    6.568820]     HOME=/
[    6.571181]     TERM=linux
[    7.126482] init: Console is alive
[    7.130519] init: - watchdog -
[    7.150439] kmodloader: loading kernel modules from /etc/modules-boot.d/*
[    7.164918] gpio_button_hotplug: loading out-of-tree module taints kernel.
[    7.173362] gpio-keys keys: does not support key code:316
[    7.178844] gpio-keys keys: probe with driver gpio-keys failed with error -22
[    7.510603] mxl-gsw1xx stmmac-0:1f: configuring for fixed/rgmii-id link mode
[    7.524679] mxl-gsw1xx stmmac-0:1f: Link is Up - 1Gbps/Full - flow control off
[    7.553658] mxl-gsw1xx stmmac-0:1f wan (uninitialized): PHY [stmmac-0:1f-mii:00] driver [Intel XWAY PHY11G (xRX v1.2 integrated)] (irq=POLL)
[    7.593348] mxl-gsw1xx stmmac-0:1f lan1 (uninitialized): PHY [stmmac-0:1f-mii:01] driver [Intel XWAY PHY11G (xRX v1.2 integrated)] (irq=POLL)
[    7.631981] mxl-gsw1xx stmmac-0:1f lan2 (uninitialized): PHY [stmmac-0:1f-mii:02] driver [Intel XWAY PHY11G (xRX v1.2 integrated)] (irq=POLL)
[    7.662490] DSA: tree 0 setup
[    7.665549] mxl-gsw1xx stmmac-0:1f: probed GSWIP version 23 mod 0
[    7.683098] kmodloader: done loading kernel modules from /etc/modules-boot.d/*
[    7.701499] init: - preinit -
Cannot parse config file '/etc/fw_env.config': No such file or directory
Failed to find NVMEM device
[    8.317865] sf19a2890-gmac 10800000.ethernet eth0: Register MEM_TYPE_PAGE_POOL RxQ-0
[    8.328433] sf19a2890-gmac 10800000.ethernet eth0: No Safety Features support found
[    8.336240] sf19a2890-gmac 10800000.ethernet eth0: No MAC Management Counters available
[    8.344344] sf19a2890-gmac 10800000.ethernet eth0: IEEE 1588-2008 Advanced Timestamp supported
[    8.353486] sf19a2890-gmac 10800000.ethernet eth0: registered PTP clock
[    8.363302] sf19a2890-gmac 10800000.ethernet eth0: configuring for fixed/rgmii-id link mode
[    8.373383] sf19a2890-gmac 10800000.ethernet eth0: Link is Up - 1Gbps/Full - flow control rx/tx
[    8.384260] mxl-gsw1xx stmmac-0:1f lan1: configuring for phy/internal link mode
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
[   12.646746] procd: - early -
[   12.650084] procd: - watchdog -
[   13.251532] procd: - watchdog -
[   13.255701] procd: - ubus -
[   13.320209] procd: - init -
Please press Enter to activate this console.
[   13.883311] kmodloader: loading kernel modules from /etc/modules.d/*
[   13.999141] kmodloader: done loading kernel modules from /etc/modules.d/*
[   15.240671] urngd: v1.0.2 started.
[   40.813329] sf19a2890-gmac 10800000.ethernet eth0: Link is Down
[   40.844031] sf19a2890-gmac 10800000.ethernet eth0: Register MEM_TYPE_PAGE_POOL RxQ-0
[   40.855874] sf19a2890-gmac 10800000.ethernet eth0: No Safety Features support found
[   40.863863] sf19a2890-gmac 10800000.ethernet eth0: No MAC Management Counters available
[   40.872168] sf19a2890-gmac 10800000.ethernet eth0: IEEE 1588-2008 Advanced Timestamp supported
[   40.881583] sf19a2890-gmac 10800000.ethernet eth0: registered PTP clock
[   40.888526] sf19a2890-gmac 10800000.ethernet eth0: configuring for fixed/rgmii-id link mode
[   40.897805] sf19a2890-gmac 10800000.ethernet eth0: Link is Up - 1Gbps/Full - flow control rx/tx
[   40.933356] mxl-gsw1xx stmmac-0:1f lan1: configuring for phy/internal link mode
[   40.945869] br-lan: port 1(lan1) entered blocking state
[   40.951246] br-lan: port 1(lan1) entered disabled state
[   40.956976] mxl-gsw1xx stmmac-0:1f lan1: entered allmulticast mode
[   40.963538] sf19a2890-gmac 10800000.ethernet eth0: entered allmulticast mode
[   41.005209] mxl-gsw1xx stmmac-0:1f lan1: entered promiscuous mode
[   41.011456] sf19a2890-gmac 10800000.ethernet eth0: entered promiscuous mode
[   41.098390] mxl-gsw1xx stmmac-0:1f lan2: configuring for phy/internal link mode
[   41.123621] br-lan: port 2(lan2) entered blocking state
[   41.129017] br-lan: port 2(lan2) entered disabled state
[   41.134813] mxl-gsw1xx stmmac-0:1f lan2: entered allmulticast mode
[   41.163759] mxl-gsw1xx stmmac-0:1f lan2: entered promiscuous mode
[   41.234287] mxl-gsw1xx stmmac-0:1f wan: configuring for phy/internal link mode
[   44.292212] mxl-gsw1xx stmmac-0:1f lan2: Link is Up - 1Gbps/Full - flow control rx/tx
[   44.300276] br-lan: port 2(lan2) entered blocking state
[   44.305753] br-lan: port 2(lan2) entered forwarding state
[   45.411902] mxl-gsw1xx stmmac-0:1f wan: Link is Up - 1Gbps/Full - flow control off



BusyBox v1.37.0 (2026-01-20 15:07:07 UTC) built-in shell (ash)

  _______                     ________        __
 |       |.-----.-----.-----.|  |  |  |.----.|  |_
 |   -   ||  _  |  -__|     ||  |  |  ||   _||   _|
 |_______||   __|_____|__|__||________||__|  |____|
          |__| W I R E L E S S   F R E E D O M
 -----------------------------------------------------
 OpenWrt SNAPSHOT, r0+32696-f4c5f96e89
 -----------------------------------------------------

 === WARNING! =====================================
 There is no root password defined on this device!
 Use the "passwd" command to set up a new password
 in order to prevent unauthorized SSH logins.
 --------------------------------------------------


 OpenWrt recently switched to the "apk" package manager!

 OPKG Command           APK Equivalent      Description
 ------------------------------------------------------------------
 opkg install <pkg>     apk add <pkg>       Install a package
 opkg remove <pkg>      apk del <pkg>       Remove a package
 opkg upgrade           apk upgrade         Upgrade all packages
 opkg files <pkg>       apk info -L <pkg>   List package contents
 opkg list-installed    apk info            List installed packages
 opkg update            apk update          Update package lists
 opkg search <pkg>      apk search <pkg>    Search for packages
 ------------------------------------------------------------------

For more information visit:
https://openwrt.org/docs/guide-user/additional-software/opkg-to-apk-cheatsheet

root@OpenWrt:~# ping 9.9.9.9
PING 9.9.9.9 (9.9.9.9): 56 data bytes
64 bytes from 9.9.9.9: seq=0 ttl=58 time=5.754 ms
64 bytes from 9.9.9.9: seq=1 ttl=58 time=3.045 ms
^C
--- 9.9.9.9 ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 3.045/4.399/5.754 ms
root@OpenWrt:~# uname -a
Linux OpenWrt 6.12.65 #0 SMP Tue Jan 20 15:07:07 2026 mips GNU/Linux
root@OpenWrt:~# 
2 Likes

I’ve pushed everything to Github, so interested people and try and build this themselves.

Build instructions

git clone -b gl-sft1200 https://github.com/dangowrt/openwrt openwrt-sft1200
cd openwrt-sft1200
scripts/feeds update -a
scripts/feeds install -a
cat >.config <<EOF
CONFIG_TARGET_siflower=y
CONFIG_TARGET_siflower_sf19a2890=y
CONFIG_TARGET_siflower_sf19a2890_DEVICE_glinet_gl-sft1200=y
CONFIG_PACKAGE_luci-ssl=y
EOF
make defconfig
# or use menuconfig instead of defconfig to customize your build
make -j$(nproc)

I don’t think it makes sense to include all those backports to Linux 6.12 in official OpenWrt, now that OpenWrt’s main branch is about to introduce support for Linux 6.18 soon. I’ll add the device once support for Linux 6.18 has been added officially, as that will require much less backport patches.

As said before, WiFi and hardware flow-offloading (HW-NAT) are not supported at this point, so what you get is basically a slow router “walking on a stick” (as there is only a single Ethernet interface provided by the SoC) without WiFi. But the switch is now fully supported by the new DSA driver, so you get Gigabit wirespeed for all Layer-2 bridge and VLAN features. And you got a USB 2.0 port which works fine (sadly 5V power of the USB port apparently cannot be controlled in software). Makes a nice printserver, for example. Or a not-very-fast Wireguard VPN endpoint.

1 Like

Thanks for the updates! I will let R&D know this and try to provide the info you need.

2 Likes

Porting the WiFi driver is probably doable, but still a lot of work. And it won't be me doing it.
Getting the hardware flow-offliading (HW-NAT) to work is also very possible, but will very likely also require implementing an 802.1Q-based tagging format in the switch driver (as I'm 99% certain that the HW-NAT engine cannot deal with Intel/MaxLinear proprietary 8-byte DSA tag, but requires "classic" 802.1Q VLAN, and may support Q-in-Q ie. 802.1ad if we are very very lucky)

1 Like

Hello,

I've sent you some driver information, please check the attachment in the PM.
Any other need?

1 Like

@dangowrt thanks a lot for your efforts.

I added wifi and hw-nat for this sft1200 branch, but still work in progress. Feel like I need review from mo experienced person.

My repo:

Used info from:
WiFi drivers for 6.9 kernel => github_com/Siflower/sf_wifi/tree/sf19a2890-6.9
HWNAT from => github_com/BPI-SINOVOIP/BPI-WiFi5-Siflower/tree/3cc0edbe499783734c0c9908585cf039f22375ea/openwrt-18.06/package/kernel/

1 Like

Wow, impressive! Nice work!
I've left a few comments on Github. The WiFi driver needs to use NVMEM rather than the odd factory mtd reading stuff in device tree the vendor did. Instead it should be done similar to how the Ethernet driver read the RGMII delay.

The switch will need an actual implementation using 802.1Q-based tag, even the current tag-none implementation won't work because it doesn't actually switch off tagging on the CPU port...

Great! I've successfully compiled an image. Is Wi-Fi enabled yet? I don't have a Wi-Fi interface. If possible, could you give me a quick tip on what to do?

Tried to compile firmware for SFT-1200 Opal (I have the OPAL router), but I wasn’t successful. The cause was incompatibility between the kernel version and the sf-wifi driver. The repository uses a newer kernel version (around 6.6 / 6.12), but the sf-wifi driver is modified for a different version. How can this be resolved? I’m not very experienced with Linux.