From b65a405a4349fd2731fad3eccb4c513662cdeb63 Mon Sep 17 00:00:00 2001 From: Daniel Barlow Date: Tue, 7 Mar 2023 19:11:46 +0000 Subject: [PATCH] wibble --- THOUGHTS.txt | 214 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 214 insertions(+) diff --git a/THOUGHTS.txt b/THOUGHTS.txt index 896bb76..74d22e8 100644 --- a/THOUGHTS.txt +++ b/THOUGHTS.txt @@ -771,3 +771,217 @@ we have a firewall nft script but we're not running it on boot we have forwarding but no dns, maybe because we haven't told dnsmasq about any upstream servers + +Sun Feb 26 21:08:47 GMT 2023 + +to add firmware we need to put files in /lib/firmware, which means +a module + +i guess we should do that in the device module + +we can create the firmware files as packages + + +for the cal data we would like to get it from the device MTD "art" +partition at +boot time. + +f +====from openwrt + + + +case "$FIRMWARE" in +"ath10k/cal-pci-0000:00:00.0.bin") + case $board in + allnet,all-wap02860ac|\ + araknis,an-500-ap-i-ac|\ + araknis,an-700-ap-i-ac|\ + engenius,eap1200h|\ + engenius,enstationac-v1|\ + glinet,gl-x750|\ + watchguard,ap300) + caldata_extract "art" 0x5000 0x844 + ath10k_patch_mac $(macaddr_add $(mtd_get_mac_binary art 0x0) 2) + + + + +caldata_extract part offset count + caldata_dd $mtd /lib/firmware/$FIRMWARE $count $offset || \ + caldata_die "failed to extract calibration data from $mtd" + dd if=$source of=$target iflag=skip_bytes,fullblock bs=$count skip=$offset count=1 2>/dev/null + +======= + +part=$(basename $(dirname $(grep -l art /sys/class/mtd/*/name))) +dd if=/dev/$part \ + of=/run/cal-pci-0000:00:00.0.bin iflag=skip_bytes,fullblock \ + bs=0x844 skip=0x5000 count=1 + +Mon Feb 27 22:46:37 GMT 2023 + +Found and fixed a bunchg of things that were stopping ath10k from +working. The remaining problem is (I think) that insmod is not +synchronous, so "ip link set up dev wlan1" doesn't work immediately +after the module is inserted. Maybe we need another netlink thing +to wait until the interface is present. + + +Wed Mar 1 18:26:44 GMT 2023 + +ath10k works, but the wlan module loading stuff is quite kludgey + +I wonder if wlan0, wlan1, eth0, eth1 etc should be defined per-device +- how does the aplication config know which devices exist? If we +decide to switch to some form of persistent device naming, the names +will differ from one device to the next. Perhaps the device should +also provide standard names where possible? + +services.network.links = { + lan = interface { ... }; + wan = interface { ... }; + wlan_24 = interface { ... }; + wlan_5 = interface { ... }; +} + +Thu Mar 2 22:45:11 GMT 2023 + +We have a flashable image! + +Now we can use the gl-ar750 for internet access in the shed, we can +apppropriate the other device that's in there and try Liminix on it + +Fri Mar 3 23:08:58 GMT 2023 + +If we're going to unplug serial console from the gl-ar750 maybe we +should install an ssh server first. + +0) set a root password +1) allow setting a root password from configuration.nix +(means defining config.users properly) +2) allow authorizedKeys per user +3) dropbear service +4) see if the wired lan works! :-) + + +Sat Mar 4 12:31:07 GMT 2023 + +To improve logging, each service should have its own s6-log service +which prefixes the service name onto the log line and then sends to +stdout + + https://skarnet.org/software/s6/servicedir.html + https://skarnet.org/software/s6/s6-log.html + +As far as I can tell, the `log` directory inside the service +directory should itself be a service directory for the s6-log +process that does this + +.... hahaha no that doesn't work + +s6-rc, for some reason, ignores the `log` directory and requires +that loggers be done with consumer-for and producer-for instead + + +Sat Mar 4 23:27:00 GMT 2023 + +notes for this week's news update + +* ath10k kernel support and and firmware + +- 5GHz wifi works + +- need to retrieve the firmware from a special - partition on the + device itself, so we do that using a service that - the wlan + interface depends on + +* replace waitup with more generally useful ifwait + +to make the ath10k load at boot, we need to insert the module and then +wait for it to do something or other in the background before we can +configure the interface. so we need something like waitup but +for presence not operational state + +it turns out that a program that just waits for a particular interface +state and then exits is quite simple to add into run scripts and +we don't need all that notification-fd stuff anyway + +* move FW_LOADER* config to modules/base + +* rejig config a bit. +- device hardware characteristics are now under + the `hardware` key and include the available network interfaces. +- options for users and groups are now defined a bit more + specifically than "attrset", making it possible to e.g. set a + root password +- dts is moved from `boot` to `hardware` + + +* now producing flashable images, so you can generate a liminix config +and write it to the device instead of having to boot using TFTP and +a serial console every time + +* ssh support + +* prefix logs with the service name + +Sun Mar 5 22:51:21 GMT 2023 + +Added swconfig: it was a straight copy from nixwrt and hasn't changed +upstream since. But don't need it, because the lan port works fine +without it (I assume both lan ports and the cpu are all connected +untagged) + +Mon Mar 6 09:42:33 GMT 2023 + +echo 17 >/sys/class/gpio/export +echo out >/sys/class/gpio/gpio17/direction + + +why are our images getting big + +- lua links ncurses +- hostapd links openssl and sqlite +- nftables needs + - iptables? + - jansson? what is that? + - libedit/readline +- ifwait needs bash + + + File: result/squashfs + Size: 10371072 Blocks: 20256 IO Block: 4096 regular file + +with smaller nftables: 9617408 Blocks: 18784 + +hostapd wqithout sqlite 9003008 Blocks: 17584 + +without bash: 8622080 Blocks: 16840 IO Block: 4096 regular file + +without lua readline: bigger?! 8769536 Blocks: 17128 IO Block: 4096 regular file + + +Mon Mar 6 20:57:49 GMT 2023 + +[ 0.539992] mtk_soc_eth 10100000.ethernet: mdio-bus disabled +[ 10.493918] platform regulatory.0: Direct firmware load for regulatory.db fail +ed with error -2 +[ 10.502828] cfg80211: failed to load regulatory.db + +Check in morning, but whichever port the ethernet cable is plugged into, +is considered by the kernel as port 0 - which I think we should treat as +WAN + +VLAN 1: + vid: 1 + ports: 1 2 3 4 5 6t +VLAN 2: + vid: 2 + ports: 0 6t + +ip link add link eth0 name lan type vlan id 1 +ip link add link eth0 name wan type vlan id 2 + +figure out how to add these to gl-mt300a device config +then extedner.nix can add a bridge