SuperWRT源代码的目录结构

SuperWRT是Terra自行开发的一个无线路由器项目。主要源代码的目录结构如下(部分目录由于安全考虑,暂未公开):


.repo/ doc/ sdk/

sdk:
apps/ boot/ build/ configs/ data/ device/ host/ linux/ rules/

apps:
busybox-1.22.1/ iptables-1.4.21/ lighttpd-1.4.48/ socat-1.7.3.2/ hostapd-2015-03-25/ iw-3.17/ openssl-1.0.2/ tinyalsa-20190922/
libev-4.24/ libnl-tiny-0.1/ iperf-3.6/ json-c-0.12/ readline-6.3/ pcre-8.42/ sqlite-3.22.0/ zlib-1.2.8/
base-files/ cdeath_handler/ debugutils/ pppc/ rtmtools/ svgate/ servd/ sptt/
switchc/ qcawifi/ wifibuddy/ datexd/ libswc/ smodem/ swrt/

libswc:
Makefile sl_crypto.c sl_evdns.h sl_file.h sl_internal_base64.c sl_internal_rsa.c sl_json.h sl_log.h sl_sini.c sl_stdext.h sl_util.c
sl_avltree.c sl_crypto.h sl_ev.h sl_http.c sl_internal_base64.h sl_internal_rsa.h sl_libev.c sl_netlink.c sl_sini.h sl_uart.c sl_util.h
sl_avltree.h sl_debug.h sl_fastcgi.c sl_http.h sl_internal_comm.h sl_internal_sha1.c sl_libev.h sl_netlink.h sl_socket.c sl_uart.h
sl_buf.c sl_ev.c sl_fastcgi.h sl_internal_aes.c sl_internal_md5.c sl_internal_sha1.h sl_list.h sl_rsyncio.c sl_socket.h sl_udp6.c
sl_buf.h sl_evdns.c sl_file.c sl_internal_aes.h sl_internal_md5.h sl_json.c sl_log.c sl_rsyncio.h sl_stdext.c sl_udp6.h

datexd:
batman_adv.h client.c datex_api.c datex.h lib Makefile netlink.c nl80211.h README.txt server.h sinfo.h unix_sock.h util.h
bvis/ client.h datex_api.h gnss/ main.c mvis/ netlink.h packet.h server.c sinfo.c unix_sock.c util.c

wifibuddy:
buddy.c client.c doc/ ifctl.h Makefile nl80211.h sock.c status.c util.c wbuddy.h
buddy.h cscope.out ifctl.c main.c nl80211.c README sock.h status.h util.h wifibuddy_setup.sh

sptt:
alsactl.c audio.c cards/ client.c codec.c coder.c common.h crypto.h gate.c main.c mgmt.c mixer.c node.c packet.h ptt.ini sndev.c sock.c test/
alsactl.h audio.h cards.h client.h codec.h coder.h crypto.c g726/ gate.h Makefile mgmt.h mixer.h node.h ptt.h README.txt sndev.h sock.h

servd:
devmng/ files/ inc.mk lib/ link/ Makefile policy/ README supports/ test/
servd/devmng:
action.c client.h db.txt dev_firmware.c device.h genregdb.awk mdb.c policy.h regdb.h sys_config.c task.h util.c webapi_client.c webapi_sys.c
action.h common.h dev_config.c dev_firmware.h event.c main.c mdb.h README.txt storage.c sys_config.h user.c util.h webapi_dev.c webapi_tools.c
client.c cron.c dev_config.h device.c event.h Makefile policy.c regdb.c storage.h task.c user.h webapi.c webapi.h webapi_user.c
servd/link:
main.c Makefile server/ servs/
servd/link/server:
Makefile sr_client.c sr_client.h sr_common.h sr_dist.c sr_dist.h sr_link.c sr_link.h sr_log.h sr_main.c sr_serv.c sr_serv.h
servd/link/servs:
Makefile s01_link/ s16_devmng/ z02_srvmng/ z20_sock5t/ z26_webportal/

swrt:
doc/ files/ inc/ inc.mk lib/ main.c Makefile sapi/ schk/ sddns/ sethwake/ sfw/ sl2s/ snrd/ spkg/ srcmd/ svld/ swebp/ tools/

linux:
drivers/ kernels/

drivers:
compat-wireless-2016-10-08/ rtmesh/ swd/

swd:
crypto/ doc/ driver/ include/ lic.c lic_gpl.c mac80211/ main.c main_gpl.c Makefile net/ proclib.c README.txt sbi.c sbi_gpl.c
swd/net:
http.c ippkg.c Makefile.inc nscd.c nscd_gpl.c socket.c stc.c stc_gpl.c syslib.c syslib.h table.c table_gpl.c vgate_gpl.c vteth_gpl.c webhack.c webportal.c webportal_gpl.c

SuperWRT v0.7.1发布,增加集成AC的Pro版本

SuperWRT v0.7.1版本于2018年05月27日发布。

本次版本增加及修改的特性有:

1. 增加Pro版本(付费版本),在pro版本中加入如下特性:
1. 集成式AC管理功能。可统一配置设备,并查看所在在线终端。(使用AC功能,需配合16M Flash。)
2. 加入AC地址自动广播功能。开启二层管理的新版本设备,可自动连接AC。
3. 加入邻居设备扫描功能。
4. 加入U盘和SD卡支持,可用于存储AC数据(仅支持FAT32格式)。自动优先使用SD卡。
5. 支持在DHCP报文中通知AC服务器地址。
2. 服务器连接功能更新:
1. 显示服务器连接状态。
2. 支持新版本服务器连接(连接新版本Link服务器需要许可证,连接原Easy版本无限制)。
3. 支持DHCP和二层广播两种方式自动获取AC服务器地址。
4. 加入AC服务器时,使用Admin用户密码验证AC服务器合法性。
5. 支持AC服务器配置下发,状态获取,版本升级功能。
3. 无线功能更新:
1. 加入信道占用率统计及显示功能。(其中:忙-收-发=信道干扰)
2. 加入终端连接时长显示。
3. WiFi Buddy功能详细状态显示。
4. WiFi Buddy增加VLAN配置。
4. 优化许可证信息显示。

本次版本解决的Bug有:

1. 解决中继部分40M频宽设备无法再发射问题。
2. 解决仅一个终端接口时,用户状态中undefined问题。
3. 解决有时网页配置显示缓慢问题。
4. AR8337改善检测Delay稳定性问题。
5. WDS终端在流量监控中无法统计的问题。
6. 优化Tiny版本稳定性,限制并发连接数量,防止内存耗尽。
7. 使用80M频宽时的Bug。
8. 解决干扰情况下长时间运行偶尔出现接收挂死问题。

 

SuperWRT v0.6.1发布,加入创新的WiFi Buddy自组网技术

在沉默了一个多月后,SuperWRT迎来了新版本v0.6.1。在此版本中,主要增加了SuperWRT创新研发的WiFi Buddy技术,实现自组网功能。

可参考目前市场上对比的产品是:Netgear Orbi、Ubnt Amplifi Mesh、MikroTik HWMP Mesh。

WiFi Buddy是我们根据常见的几种需要自组网的场景,而设计的一种更贴近实际需求的自组网技术。WiFi Buddy具有以下技术特点:

  1. 主要满足拓扑变化比较慢的场景使用。主要用于有线单点故障自愈,无线组网回传。(如需要快速拓扑适应,可使用我们Mesh版本。)
  2. 支持复杂组网,可用于VLAN透传,实现多SSID网络。
  3. 充分考虑稳定性、可靠性、兼容性的要求,减少实现复杂度。
  4. 减少协议开销,提高转发效率。
  5. 可充分利用多频设备,及有线和无线混合跳跃转发。尽量利用不同频率来提高整体转发带宽,减少延迟。

WiFi Buddy区别常见的Mesh实现,如802.11s及各种基于adhoc的Mesh。该类型的Mesh协议开销比较大,对于CPU的消耗也比较大,同时,对于多频设备也无法错开频率。所以上,上述类型Mesh一般的带宽都比较小,但对拓扑变化适应快,适合一种些特殊应用使用。

WiFi Buddy也区别于近期一些厂家推出的家用Mesh技术,比较有代表性的就是高通的WiFi Son。以高通的WiFi Son为例,该实现以一个单独的160M频宽11AC作为回传链路,专门用于主设备与子设备数据连接,再以通常用另外的一个2.4G和5G作为覆盖(IPQ4019的方案)。上述方案硬件成本很高,同时对多VLAN实现的多SSID网络不是很友好,而且无线回传是固定设置的。

WiFi Buddy技术主要应用于以下几个场景:

  • 对有线AP进行无线冗余连接备份

在一般场景中,会选择使用有线连接所有AP,来保证无线网络的带宽及使用效果。但实际应用中,可能因为网口松动、现场施工、自然灾害等原因,导致个别AP有线无法连通。这时,通过使用WiFi Buddy来解决该问题。

 

wifi_buddy_wirebackup首先在布网时,打开WiFi Buddy功能。WiFi Buddy会监控所有接口,发现有线网络通时,将不进行无线之间互连。一旦WiFi Buddy功能监控到有线网络断开时,将自动连接到附近信号较好的AP上,从而减少了网络故障时间。

  • 无线数据回传

在某些场景中,不方便使用有线连接AP,此时,可以使用WiFi Buddy实现无线链路上连。相对传统使用WDS的网桥方式,WiFi Buddy技术可以保证当前上连AP故障时,自动切换到其它AP。当某些设备与AP直接通信信号不好时,也可以使用临近AP进行中继。

wifi_buddy_wirelesslink

  • 双频及多频设备无线组网

对于双频或多频设备,使用WiFi Buddy时,会自动根据链路情况,选择下一跳使用同频还是异频。一般在环境允许情况下,会尽量使用异频,从而有效提高整体带宽。

wifi_buddy_multirf

  • 终端设备漫游切换

使用WiFi Buddy的Fast版本(开发中),可以实现单节点设备的快速漫游,从而满足一些移动数据场景的需求。

wifi_buddy_fastroaming

WiFi Buddy的配置使用:

将所有需要组网的设备,在无线设备中打开WiFi  Buddy功能,并设置相同的用户名和密码,网络中至少有一个设备需勾选“无线伙伴网关”选项。将希望使用WiFi Buddy射频,打开WiFi Buddy的“加入”选项,即可进行自组网。注意:如果网络中没有设备打开“无线伙伴网关”选项,已经完成组网的设备仍会周期性进行切换信道的扫描,将造成连接终端周期性丢包。

wifi_buddy_config wifi_buddy_status

目前,发布WiFi Buddy功能仍处于测试阶段,仅在std版本中提供,欢迎进行问题反馈。

在本次发布的v0.6.1中,还增加了以下功能:

  1. 在std版本中,加入静态路由、静态域名地址功能。
  2. 在tiny版本中,去掉无线高并发功能以节省空间。
  3. 增加AR9331支持。

并且解决了以下Bug:

  1. 在上一个std版本中,5G不能使用DFS信道问题。
  2. 修复无线高并发中的一些小Bug。
  3. 修复一些Web界面显示的小Bug。

关于SuperWRT的付费特性及SSID广告问题,仍然要再说明一次。我们一直坚持基础特性,及家用场景免费。一些限制(或者被称为恶心人的地方)主要也是针对可能的商业使用,及其它某些盈利使用方式。我们不会做采集用户信息等一些隐蔽的、损害用户的获利方式,即使SuperWRT自身的SSID广告也是可以自行选择开关的,而且是默认关闭的。我们希望为支持我们的用户提供更好的系统,但我们不是圣母或非盈利性组织,也没有人给我们捐赠,我们也希望获取一定的商业价值,将事情长期做下去,并且做更多更好用的技术。再次对一直以来支持我们的用户表示衷心的感谢,谢谢!

极简配置网桥,SuperWRT发布针对网桥应用的Link版本

SuperWRT从v0.5.13开始,增加了Link版本,该版本是一个专门针对网桥应用的版本。该版本有以下特点:

  1. 针对网桥应用进行精简,有非常高的可靠性。
  2. 极简配置方式,在默认配置上电后,仅需要使用物理“连接按钮”,就可以完成主从网桥配置和连接,可生成高强度的加密密钥,而无需进入配置网页。
  3. 针对网桥应用,去掉了无关的功能,简单方便的配置。但仍支持直接升级到SuperWRT的其它版本,获取更多功能。
  4. 支持固定IP与动态IP方式同时使用,以方便管理。
  5. 支持5/10/20/40/80M多样的频宽。支持使用2.3-2.7G/4.9-6.1G在法规允许的特殊领域使用。
  6. 支持无线透传串口数据,并针对延迟进行了专门的优化。
  7. 支持VLAN、STP、IGMP Snooping等功能,可配置交换芯片的端口VLAN,可应用在多种场景。
  8. 快速启动,使用固定信道时,上电到连接仅需20s。
  9. 人性化的LED状态显示,可显示连接配对状态,信息强度等信息。
  10. 支持与免费开源的OpWiFi平台进行对接。
  11. 支持使用SuperWRT配套的二层发现及管理工具,进行设备发现和无IP管理。
  12. 支持使用在线定制boot的方式,客户可自行生成支持自家硬件的版本。
  13. 可使用SuperWRT的无线高并发功能,提高多设备时的整体带宽和抗干扰性。



link_setup_routerlink_conf_wlanlink_apps

目前,Link版本仅与硬件厂商进行合作,无免费版本。Link版本中,可增加厂家的Logo及信息。欢迎感兴趣的厂家与我联系。

SuperWRT v0.5.1发布,即将发布正式版本

SuperWRT v0.5.1于2017年5月24日发布。此次小版本中的Bug更新完毕后,将发布正式版本。

本次版本增加及修改的特性有:

  1. 在tiny版本中,仅保留中文界面。
  2. 在std版本中,完善的VLAN配置,可设置IP及DHCP服务,并可设置隔离,支持远程webportal针对不同VLAN进行不同配置。
  3. 在std版本中,增加Switch配置。
  4. 增加PPPoE拨号错误原因显示及成功后对端地址显示。
  5. 重新合入PPtP VPN功能。

本次版本解决的Bug有:

  1. 使用Wisp时,配置WLAN导致DHCP无法再次获取问题。
  2. std版本中,主机有IPv6时,不显示主机MAC地址问题。

下面对目前SuperWRT已实现的功能进行汇总介绍。

SuperWRT是一个第三方路由系统,使用Linux内核为基础从头开发,并非OpenWRT、DDWRT、Tomato等系统的分支。计划有三个版本:Tiny版本,Std版本,Ext版本。目前,Tiny版本和Std版本的测试版本已经对外发布。

SuperWRT Tiny版本功能介绍

SuperWRT的Tiny版本支持无线路由器基本功能,同时,增加了我们认为重要的功能。

    1. Tiny版本仅1.8M,可直接刷入2M Flash的设备。是目前唯一还可以支持2M Flash的第三方路由系统。即使是TP-Link的目前2M Flash设备,也是采用的VxWorks系统。
    2. SuperWRT支持用网页管理,我们的网页采用响应式设计,对手机端管理更加友好。
    3. SuperWRT支持更加友好的限速功能。可以设置默认用户速率,也可针对特定用户设置速率限制。同时,我们不断完善智能流整形功能,以保证在限速下更好的QoS体验。
    4. 特别开发的无线高并发优化特性,可在无线环境较差时,明显提供无线并发用户数量及带宽,改善多用户时的无线体验。
    5. SuperWRT支持一般路由器的广域网连接方式:静态地址、动态地址、PPPoE拨号。其中,根据大家需求,更支持PPPoE多拨功能,在多拨下可进行负载均衡。
    6. SuperWRT在Tiny版本中也有访客网络功能。可以增加一个单独的SSID作为访客网络。访客网络可与正常网络完全隔离,可以为访客网络设置单独的用户限速。
    7. 在访客网络中,可以开启Web Portal(网页登录)功能。Tiny版本的Web Portal有本地和远程两种模式。在本地模式中,可以选择点击确认,用户名密码登录,管理员授权等方式,可以定制网页标题。使用远程模式,可以与OpWiFi平台的Web Portal功能对接,支持更丰富的认证方式,可设置支持IP和域名白名单,并可针对用户下发限流量,限速,限时间等配置。
    8. 支持远程管理。可以与开源的OpWiFi Easy版本管理平台对接。集中管理配置,下发指令,更新版本。
    9. 支持AP工作模式。更可以配置为瘦AP模式,自动连接管理服务器。
    10. 在AP工作模式下,支持配置VLAN和配置更多SSID。
    11. 支持多种级别用户登录,在底层API限速不同权限,有更高安全性。目前,配置用户仅可以查看状态,配置WAN相关信息。
    12. 支持二层扫描发现设备,并可通过MAC地址对设备进行管理。

 

SuperWRT Std版本功能介绍

Std版本在Tiny版本功能的基础上,增加了如下功能:

  1. 支持多语言的界面系统。
  2. 无线Station模式(即Wisp),可以通过无线连接其它AP上网。SuperWRT的Station模式更加优化,解决了其它系统中一些不方便的问题。如:可自动切换转发SSID信道,可配置多个备选SSID,Station未关联时转发SSID仍可以连接。
  3. 无线可创建Station接口。并支持工作在WDS或万能桥接两种模式。万能桥接支持IPv4、IPv6、PPPoE。
  4. Std版本支持11AC(Tiny版本不支持)。
  5. 支持WPS虚拟按钮功能。
  6. 支持PPtP VPN功能。
  7. 可创建VLAN网络,为其配置独立的IP及DHCP服务,并可设置隔离、独立的远程网页登录界面。
  8. 可配置Switch端口的VLAN,配合系统VLAN功能,实现更复杂的网络。
  9. 可以在PC上远程抓取及发送设备无线报文调试功能,用于无线问题收集。

SuperWRT版本uboot

SuperWRT为了保证更完整的用户体验,制作了一个专用的配套uboot。

SuperWRT的uboot与SuperWRT系统有紧密的关系。SuperWRT的uboot都是针对芯片发布的,可通过在线定制工具,定制出适应使用相同芯片的不同设备。SuperWRT的系统有更广泛的适应性,很多芯片都可以使用一个系统。在uboot引导SuperWRT系统时,会将相应的设备信息告诉系统,系统就会根据相应的信息配置设备。这样设计的目的,是为了降低后期版本的维护工作,一个系统版本就可以应用在不同设备上,从而可以为设备提供更长期的版本维护。

SuperWRT有如下特色功能:

  1. 有恢复网页,可通过网页刷机。在恢复网页模式下,还有启动DHCP及DNS服务,以给客户端分配地址,并可以通过域名访问网页。
  2. 支持配置密码,以防止轻易被其他人导出配置文件或刷机。
  3. 支持静态地址、动态地址、PPPoE拨号的广域网连接方式。可以从广域网通过HTTP协议下载版本,以在系统出错时,自动恢复设备。
  4. 有配套的PC端工具,可通过网口中断启动,进入恢复网页,或批量升级设备。

SuperWRT支持的芯片

SuperWRT独创了在线定制uboot系统,可以根据设备硬件,选择相应配置,自动生成支持的uboot。该uboot还能将硬件信息传给kernel,从而直接支持新的设备。目前,SuperWRT系统支持ar934x/qca953x/qca955x/qca956x主芯片,支持AR928x/AR938x/AR939x/AR958x/AR959x/QCA988x WLAN芯片 ,支持AR8033/AR8035/AR83x7系列PHY芯片。

SuperWRT v0.4.3发布,去掉首页测试版本提示

SuperWRT v0.4.3版本于2017年04月17日发布。

本次版本增加及修改的特性有:

  1. 增加WAN口MTU设置。
  2. 登录语言设置在浏览器中保证一年。
  3. 去掉首页的测试版本提示信息,为发布正式版本准备。

本次版本解决的Bug有:

  1. 解决Wisp模式更改Sta接口设置后需要重启设备的问题。
  2. 将一些Switch默认隔离变为转发。
  3. 解决某些情况下,不显示WDS终端的问题。
  4. 解决多拨与WAN速率配置可能出现冲突的问题。

 

新版本v0.4.2发布,改善流控,增加二层网页登录功能。

SuperWRT v0.4.2版本于2017年04月12日发布。

本次版本增加及修改的特性有:

1. 合入新版本智能流控功能,控制更加智能准确。
2. 增加二层Webportal功能,可在网桥模式实现网页登录。(本版本暂不支持在配置VLAN的AP接口进行二层Webportal)
3. 支持无线网桥Station透传VLAN后转发到AP相应VLAN功能。
4. 增加IP-MAC地址绑定功能,与DHCP静态地址合并一起实现。

本次版本解决的Bug有:

1. 解决上一个版本中的翻译错误。
2. 解决WLAN漫游感知功能的小Bug。
3. 网页判断IP等字段的小Bug。

SuperWRT v0.4.1发布,实验新漫游增强特性

SuperWRT v0.4.1版本于2017年04月04日发布。

本次版本增加及修改的特性有:

1. 增加英文界面。
2. 增加地域选择,可依据地域调整支持信道及功率。
3. 增加WLAN漫游感知功能,可提高漫游体验(实验中)。
4. 增加单设备的WLAN负载均衡功能(实验中)。
5. 增加WLAN信号强度指示灯支持。

本版本可与OpWiFi v0.3以后版本进行对接。

本次版本解决的Bug有:

1. 在不支持HT40的信道设置40M时,无线无法启动问题。

SuperWRT_V0_4_1_login

SuperWRT v0.3.4版本发布

本次同时更新了boot和firmware。

SuperWRT Boot v1.2.7 (2017-03-01)
———-
Bootloader更新到v1.2.7,增加改下功能:

1. 增加HTTP Debug读内存接口(可读寄存器)。
2. 增加HTTP Debug写内存接口(可写寄存器)。
3. 增加产测流程支持。
4. 增加可定制机制。

解决了以下问题:
1. 解启动旧版本TP固件的Bug。
2. 解一些其它小Bug。

SuperWRT v0.3.4 (2017-03-01)
———-
SuperWRT v0.3.4版本于2017年03月01日发布。

本次版本解决的Bug有:

1. QCA955x无线阻塞问题解决。
2. 点恢复出厂配置时,不显示等待页面问题。
3. 改善AR8236支持(目前仍有些问题未解完)。
4. 其它一些小的内部Bug。

更改的特性有:

1. 丰富状态页信息显示。

使用本版本需更新SuperWRT Device Tool v1.0.2.0。

SuperWRT v0.3.3版本发布

SuperWRT v0.3.3版本于2017年02月24日发布。

本次版本解决的Bug有:

1. std版本在部分无USB的芯片中无法启动的问题。
2. 增加网页在获取到的配置值错误时,自动选择默认值功能。
3. 修正OpWiFi在本地网络中推送时格式判断错误问题。
4. 其它一些小的内部Bug。

更改的特性有:

1. 增加无线扫描显示后的刷新功能。
2. 为便于定制更改网页实现。

SuperWRT v0.3.2 (2017-02-14)
———-
SuperWRT v0.3.2版本于2017年02月14日发布。

本次版本解决的Bug有:

1. 状态页不显示静态DNS问题。
2. WLAN最大功率小于20dBm时,默认值错误问题。
3. 修改WLAN在CN的最大功率限制。

SuperWRT v0.3.1 (2017-02-13)
———-
SuperWRT v0.3.1版本于2017年02月13日发布。

从此版本开始,改变了版本命令规则:最后一位0表示开发版本,1表示正式发布版本,其它号码为Bug修复版本。

本次版本解决的Bug有:

1. 左侧菜单点击有效区域不全问题。
2. 修复ar9002系列芯片(如AR9287)支持问题。
3. 调整AR8327/AR8337的PLL值,提高数据稳定性。
4. 修复WDS设备状态无法显示问题。
5. 调整打开高并发功能时,对弱信号用户的处理策略,正确控制用户下线。

本次版本增加及修改的特性有:

1. 升级Linux内核,从3.18.40到EOL的3.18.47版本。
2. 升级compat-wireless版本到2016-10-08版本。
3. 用户状态中增加离线设备单独分类。
4. 增加OpWiFi在本地网络中时主动推设置支持。

本版本可与OpWiFi v0.2.2进行对接。