Yup.
Welke software doet dit? Waar is de configuratie en/of code? Oh het is /root/bambu-loop.bash
. Is het hardcoded of stuurt het nog iets anders aan?
Want daar gaat iets mis. Meerdere dingen. Het scriptje stuurt elke 5 seconden een HTTP/1.1 200 OK
maar dat moet een NOTIFY * HTTP/1.1
zijn. Echter komen de rest van de velden ook niet overeen met wat het zou moeten zijn.
Dit is een packet dat de bambu zelf uitstuurt:
NOTIFY * HTTP/1.1
Host: 239.255.255.250:1990
Server: UPnP/1.0
Location: 10.4.2.42
NT: urn:bambulab-com:device:3dprinter:1
NTS: ssdp:alive
USN: 00M09A410600646
Cache-Control: max-age=1800
DevModel.bambu.com: BL-P001
DevName.bambu.com: 3DP-00M-646
DevSignal.bambu.com: -70
DevConnect.bambu.com: lan
DevBind.bambu.com: free
Devseclink.bambu.com: secure
DevInf.bambu.com: wlan0
DevVersion.bambu.com: 01.08.02.00
(elke regel eindigt op \r\n
en het hele packet eindigt met een \r\n\r\n
)
Details over Bambu's SSDP implementatie
(offtopic want BAMI negeert het en Bambu Studio doet het soms maar heeft het niet nodig)
Bambu Studio doet in sommige situaties elke 5 seconden een M-SEARCH * HTTP/1.1
. Hierop stuurt de printer (op unicast) een HTTP/1.1 200 OK
terug. En dit blijft elke 5 seconden herhalen. Waarom is me niet duidelijk want het werkt ook zonder. Of die dit doet lijkt afhankelijk te zijn van firewall settings, maar ik snap nog niet op welke manier. needs more research
onhandig detail over netcat
nc
is op mijn laptop een symlink naar nmap’s netcat (aka ncat
) maar op gateway
is dat een symlink naar openBSD’s netcat (aka netcat
). Dat zou niet moeten uitmaken want echo foo | nc -u 255.255.255.255 2021
zou in beide situaties moeten werken. Maar dat doet het niet. Blijkt dat OpenBSD’s code toch niet helemaal compatible is met Linux. Debian heeft hier een sloot patches voor, waaronder broadcast-support.patch
. Maar die vereist een extra command line optie, die upstream OpenBSD’s netcat en Nmap’s netcat helemaal niet kennen. Vervolgens ontbreekt die patch in Fedora (en wellicht meer distro’s) waardoor die wellicht helemaal geen broadcast support hebben. En om te zorgen dat die ook weer returnt moet er een -q0
bij. Wat een chaos. Oh well.
En dan is er op Debian ook nog een netcat-traditional welke al 20+ jaar unmaintained is en al helemaal niet werkt. En dan is er ook nog een busybox nc
welke op Fedora weer wel werkt maar op Debian geen -u
heeft.
aaAAAaAAAAAaaARGH!!!1!
$ echo foo | ncat -v -u 255.255.255.255 53755
Ncat: Version 7.92 ( https://nmap.org/ncat )
Ncat: Connected to 255.255.255.255:53755.
Ncat: 4 bytes sent, 0 bytes received in 0.01 seconds.
$ echo foo | netcat -v -u 255.255.255.255 53755
netcat: connect to 255.255.255.255 port 53755 (udp) failed: Permission denied
$ echo foo | netcat -vbuq0 255.255.255.255 53755
Connection to 255.255.255.255 53755 port [udp/*] succeeded!
(53755 is een willekeurig hoog poortnummer voor testing)