December 2023 Autobuild statistics

And this is the new feature I just mentioned in the update. I’ve wanted to set up some log analysis for a year to see which routers were popular and how many images were being downloaded, but didn’t have the time. This weekend was rainy and I had a some mental energy and time, so I got it done. This analysis is automated, so I plan to post these up monthly, though there might not always be time to do it on the first of the month.

Some words on methodology – these are all based on my apache logs. This first report only covers from December 9 to the end of the month, because those were all I still had in my log rotation. My scripts are now grabbing the logs daily at the end of the day, and processing that one day immediately. Identifying info is not getting kept long term, that was a priorty for me – as soon as I process the raw log, I’m saving the first digits of a hash of the downloading IP address only. That’s enough to tell different downloaders apart, but can’t be reversed to an actual single address even by brute force methods thanks to only keeping part of the hash.

A few quirks this month. For one, you’ll see a couple of images noted under “unknown” build systems, that’s because one of the new systems wasn’t spitting out its proper “-ABxx” file tag on the initial test run. You’ll also see that there are only a handful of routers listed with zero downloads, but some of those are because the script also checks against routers available when the script is run (since routers that aren’t downloaded don’t show up in the log either, and I can’t check to see what files were available a month ago). So if a router is released on 1/1 and you run the report for December, that router will show up on this list as a December router with no downloads. Not a big deal, but it’s a thing.

The other one is that there are more routers with no real downloads than indicated. A handful of folks do full scrapes of the site every month (which is fine by me), so you see “false” downloads associated with those scrapes. I saw three full scrapes in the logs in this report period, and one partial. It’s easy to get an idea by looking at the list of top user hashes, when you see someone has 400+ downloads that’s an obvious candidate. So, a router that shows only 3 downloads has good odds of not being used by anyone that month.

Without further ado,

The results:

Autobuild report for 2023-12
Compiled Mon 08 Jan 2024 03:51:02 PM UTC
Includes downloads from 2023-12-09 to 2023-12-31

Total router system downloads: 2673 by 576 unique users.

Top performing routers:
   65  Mikrotik-RBM33G
   61  ZBT-WG1608
   56  ZBT-Z8102AX
   55  Huasifei-WS1208
   53  DualQ-H721
   44  ZBT-WG1602
   37  x86-64
   33  Alwaylink-MK01K21
   32  Beeline-SmartBox_TurboPlus
   30  TP-Link-MR3020v3
   29  Huasifei-WS1208V2
   28  ZBT-WG1608-32M
   28  RaspberryPi-4-SD
   27  Arcadyan-AW1000
   26  ZBT-WG1608-16

Downloads by build system:
    5  AB18
    3  AB_1800
  655  AB19
 1321  AB21
  488  AB22
  106  AB23
   34  ABGL
   57  ABSM
    4  unknown

Routers with no downloads:
   Banana-Pi4
   GL-iNet-AX1800
   GL-iNet-AXT1800
   GliNet_MT3000
   RaspberryPi-5-SD
   RaspberryPi-5-USB

Lowest performing routers with downloads:
    5  Huasifei-WS1698AX
    5  DualQ-H721AX
    5  Asus-RT-AC56U
    4  Netgear-R8000
    4  Linksys-EA9500v1
    4  Huastlink-HC841
    4  GliNet_X3000
    3  WiFiX-NEXQ6GO
    3  TP-Link-WR902ACv1
    3  TP-Link-Archer-C6-V2
    3  Mikrotik-LHG-HB
    3  Mikrotik-LHG-2nD
    3  Linksys-EA8300
    3  Huasifei-WS1208V2-32
    3  Dlink-DIR-853-R1

Highest individual downloaders (hashed):
  493  09a87510be6e
  488  6a199cc49538
  484  bb46aef0d4b2
  377  0d58b5d9c89b
   16  151a3d90824e
   12  a6396bc71c58
   11  4b4e08145894
   10  db803b2880f2
    8  a9f7c6baf2b0
    8  44559ae5f771

Downloads by router name:
   11  Alfa-R36A
    8  Alfa-R36M-E4G
    8  Alfa-TUBE-E4G
    8  ALIX-2D13
   33  Alwaylink-MK01K21
   10  APU2C4
   27  Arcadyan-AW1000
    9  Archer-A7-V5
    8  Archer-C20-V1
    9  Archer-C2600
    8  Archer-C2-V1
    8  Archer-C5-V1
   17  Archer-C6Uv1
   13  Archer-C7-V2
    9  Archer-C7-V4
   18  Archer-C7-V5
   10  Asus-RT-AC51U
    5  Asus-RT-AC56U
   13  Asus-RT-AC58U
    8  Asus-RT-AC65P
   16  Asus-RT-AC68U
    8  Asus-RT-AC85P
   10  Asus-RT-AC87U
   10  Asus-RT-AX53U
    8  Asus-RT-N14U
   10  Asus-RT-N16
    9  Asus-RT-N56U
   13  Asus-RT-N66U
   12  BananaPi-BPi-R3
   16  Beeline-SmartBox_Pro
   16  Beeline-SmartBox_TurboModPlus
   32  Beeline-SmartBox_TurboPlus
    8  BT-HomeHub-5
    8  CheckPoint-L-50
   10  Comfast-CF-E3
   11  Comfast-CF-E5
    8  Compex-WPJ428
    9  Cudy-WR1300
    9  DIR505A1
    7  D-Link-DGL-5500-A1
    8  D-Link-DIR-825-C1
    7  D-Link-DIR-835-A1
   11  Dlink-DIR853-R1
    3  Dlink-DIR-853-R1
    7  D-Link-DIR-860L-B1
   10  D-Link-DIR-882-A1
    8  D-Link-DIR-882-R1
   12  DualQ-H721-1907
   12  DualQ-H721-2102
   11  DualQ-H721-2203
   53  DualQ-H721
    5  DualQ-H721AX
    7  Dynalink-DL-WRX36
    7  GL-AP1300
    7  GL-AR150
    7  GL-AR300M-16
    7  GL-AR300M-Lite
    7  GL-AR300M-nand
   10  GL-AR750
    8  GL-B1300
   17  GL-E750
    8  GLi-AR750S
    8  Gl.iNet-GL6416
   19  Gl.iNet-MT1300
   15  Gl.iNet-MV1000
    4  GliNet_X3000
    9  GL-MIFI
    8  GL-MT300A
    8  GL-MT300N-V1
   20  GL-MT300N-V2
    7  Globalscale-MOCHAbin
   12  GL-S1300
    8  GL-X1200
   22  GL-X750
    9  GL-XE300
   18  HiLink-HLK-7621a
    8  HiWiFi-HC5962
   55  Huasifei-WS1208
   12  Huasifei-WS1208V1
   29  Huasifei-WS1208V2
    3  Huasifei-WS1208V2-32
    8  Huasifei-WS1208v2-32
    6  Huasifei-WS1218
    7  Huasifei-WS1688AX-16
    8  Huasifei-WS1688AX-32
    5  Huasifei-WS1698AX
   10  Huasifei-WS7915AX
    4  Huastlink-HC841
    9  Huastlink-HC851-HC841
    7  Huastlink-HC952
   17  Huawei-HG553
    8  Huawei-HG556a-A
   11  Huawei-HG556a-B
    7  Huawei-HG556a-C
    7  IRZ-MT00
    8  Lenovo-Y1S-V1
    9  Lenovo-Y1-V1
    7  Linksys-E4200-V2
   10  Linksys-E8450
    7  Linksys-E8450-UBI
    9  Linksys-EA3500
    9  Linksys-EA4500-V1
    8  Linksys-EA6350v3
    8  Linksys-EA7300
    7  Linksys-EA7500v1
    8  Linksys-EA7500v2
   10  Linksys-EA8100v1
    3  Linksys-EA8300
    7  Linksys-EA8500
    4  Linksys-EA9500v1
    9  Linksys-MR8300
   13  Linksys-WRT1200AC
   17  Linksys-WRT1900ACS
   19  Linksys-WRT1900AC-V1
   16  Linksys-WRT1900AC-V2
   17  Linksys-WRT3200ACM
   16  Linksys-WRT32x
   18  M01K21
    6  Mediatek-MT7628-EVB
    7  Mercury-MW4530R
    3  Mikrotik-LHG-2nD
    3  Mikrotik-LHG-HB
    6  Mikrotik-RB433AH
    7  Mikrotik-RB750GR3
    8  Mikrotik-RB760iGS
    7  Mikrotik-RB912UAG-2HPnD
    9  Mikrotik-RB912UAG-5HPnD
    7  Mikrotik-RB922UAGS
    6  Mikrotik-RB951Ui-2nD
    8  Mikrotik-RBD52U
   15  Mikrotik-RBM11G
   65  Mikrotik-RBM33G
    9  Mikrotik-RBSXTR
    9  Mikrotik-RBwAPR-2nD
   10  Mofi-4500
    8  MYNET-N600
    9  MYNET-N750
    8  NanoPi-NEO-Plus2
    9  NanoPi-R2S
   14  NanoPi-R4S
    8  Netgear-R6220
    7  Netgear-R6300-V2
   10  Netgear-R7000
    8  Netgear-R7500-V1
    8  Netgear-R7500-V2
   10  Netgear-R7800
    4  Netgear-R8000
    9  Netgear-WNDR3700-V1
    7  Netgear-WNDR3700-V2
    7  Netgear-WNDR3700-V4
    7  Netgear-WNDR3800
   18  Netgear-WNDR4300v1
   19  Newifi-D2
    8  Nexx-WT3020-16
    8  Nexx-WT3020-8
    7  O2-Box-6431
    9  OrangePi-PC
   10  OrangePi-Plus
    8  OrangePi-Zero-Plus
    8  P2W-R619AC
   22  RaspberryPi-1
   17  RaspberryPi-2
   21  RaspberryPi-3-SD
   16  RaspberryPi-3-USB
   28  RaspberryPi-4-SD
   23  RaspberryPi-4-USB
   22  RaspberryPi-CM4-SD
   17  RaspberryPi-CM4-USB
    9  SamKnows-WhiteBox-V8
    8  Sanlinking-D240
    7  Seagate-Dockstar
   23  SmartBox_Giga
   20  SmartBox_ModGiga
    8  TP-Link-Archer-C59v1
    7  TP-Link-Archer-C59v2
    3  TP-Link-Archer-C6-V2
    7  TP-Link-Archer-C7v1
    5  TP-Link-Archer-WR1045ND
   30  TP-Link-MR3020v3
   14  TP-Link-MR3420v5
   10  TP-Link-WDR3500
    9  TP-Link-WDR3600
    8  TP-Link-WDR4300
    8  TP-Link-WDR4310
    7  TP-Link-WDR4900
   10  TP-Link-WR1043NDv2
    8  TP-Link-WR1043NDv3
   10  TP-Link-WR1043ND-V4
    8  TP-Link-WR1043N-V5
    5  TP-Link-WR703N-16meg
   10  TP-Link-WR842-V3
    3  TP-Link-WR902ACv1
    9  TP-Link-WR902ACv3
   14  TP-Link-WR942N
   20  Turris-Omnia
    7  Turris-Omnia-2102
    7  Turris-Omnia-2305
    9  UniElec-U7621-01
    7  UniElec-U7621-06
    7  UniElec-U7628-01
    3  WiFiX-NEXQ6GO
   21  WS1688AX
   11  WS1688AX-32
   37  x86-64
   22  x86-Generic
   14  x86-UEFI-64
   21  x86-UEFI-Generic
   13  Xiaomi-Mifi3G
   10  Xiaomi-Mifi3Pro
   20  Xiaomi-Mifi-Mini
    9  YouHua-WR1200JS
   16  YOUKU-YK1
   13  Z2101AX
   10  ZBT-WE1026-5G
   18  ZBT-WE1326
    8  ZBT-WE2802D
   22  ZBT-WE826-Q
   23  ZBT-WE826T
   12  ZBT-WE826-T-32meg
   15  ZBT-WE826WD
   21  ZBT-WG1602-16
   19  ZBT-WG1602-32
   11  ZBT-WG1602-32M
    8  ZBT-WG1602-32M-2102
   44  ZBT-WG1602
   26  ZBT-WG1608-16
   28  ZBT-WG1608-32M
   61  ZBT-WG1608
    9  ZBT-WG209
    8  ZBT-WG259
   23  ZBT-WG3526
    8  ZBT-WG827
   11  ZBT-WR8305RT
   10  ZBT-Z2101AX
   13  ZBT-Z2105AX
   56  ZBT-Z8102AX
   12  ZyXEL-Keenetic-Extra-II
    7  ZyXEL-Keenetic-Omni
    7  ZyXEL-NBG6817
   10  ZyZEL-NR7101

January 2024 ROOter updates

Only a handful of news on my end right now, thanks to busy jobs on my part taking away from router fun. Here are the updates on the parts that I’m involved with:

New ROOter build systems

Dairyman has released four new build systems since my September update. All four are “special purpose” systems meant to cover a handful of routers. They are:

  • SourceMaster (link) to cover MT3000, WS1698, X3000, and Z8102. This is a fork off of the OpenWRT master as of roughly 27 Nov 2023.
  • SourceBPIR4 (link) to cover BPI4, the Banana Pi R4. Currently a single image system.
  • SourceRPI5 (link) to cover RASPPI5 and RASPPI5USB, which should be the Raspberry Pi 5 board with either the usual SD card or with USB mounted root file systems.
  • Source1800 (link) to cover AW1000, AX1800, and AXT1800. These are the Arcadyan AW1000 and two GL-iNet variants, all with ipq chipsets.

None of these are currently expected to become major build systems, but they will be used where necessary to support new systems not yet covered by one of our main systems. I’m still hearing 21.02 is likely to stay our primary system for a while, as 22.03 and 23.05 are producing much larger images that aren’t going to work on a lot of routers we currently support. Kernel growth has been a big issue in particular for several years now.

Build machine upgrades

The autobuild machine has also gotten an upgrade around New Years. With the current number of router images, the main system SSD was staying around 80-90% full. The build machine now has a second SSD of the same size, so we’re set for quite a bit of future growth.

This laptop has been running the autobuild systems for almost two years now. Not bad for a total investment of roughly $250 US – all this is done off of a salvaged Dell e6410 laptop with a 2 core (4 virtual) i7 chip and 8GB of RAM, with two 1TB SSD’s. It has cranked out roughly 250 images per week in recent builds, usually in 55h or less. Never underestimate the value of ancient hardware to do real work, as these laptops were released in 2010. With weekly builds only taking roughly 1/3 of the laptop’s possible duty cycle (in hours of the week), I expect this little guy should be up for the task for a lot longer barring catastropic failure.

One point of interest is that the CPU load is shown on the build system status page here the same as it is on a ROOter status page (which is the number given by the uptime command). In the first part of the build, it’s not unusual to see utilizations hovering in the upper 20’s. Since this is a two core machine, with hyperthreading, it can handle a load of roughly 1.4 per core depending on the type of load, so for anything over about 2.8, the CPU is 100% utilized. Something to remember when people tell you to tune your builds so that your CPU load stays under your core count – that’s absolute BS. For best builds, you want your load ABOVE your core count. The lower recommendations are to make sure your system stays responsive, but it’s much, much better to handle that using the nice command when you start your build. Despite my CPU being overloaded by an order of magnitude, the machine is still perfectly responsive, and the only way to tell how hard it’s working is by hearing the fan spun up or seeing that load number.

Docker Autobuild Image updates

The base image for the autobuild containers has been updated to Debian 11.8 from 11.7. This is because one of the new build systems needed a pair of new build tools added. This can be done directly within the container for testing, but really any change in the toolchain is work updating the base image instead. This keeps the resulting images a lot more consistent.

The new base image has been applied to all 9 build systems (which took half an evening), tested, gone through a week of full builds, and all of the build system changes have been pushed to github with the new images already pushed to Docker Hub.

Bonus: there’s one more feature announcement coming (which the folks on the forum today will have already seen), but it warrants its own post.