SUBSYSTEM=="tty", ACTION=="add", ATTRS{idVendor}=="1d50", ATTRS{idProduct}=="6018", ENV{ID_USB_INTERFACE_NUM}=="00", MODE="0666", SYMLINK+="ttyBMP0"

This works, but ATTRS{bInterfaceNumber} doesn't work despite it being listed in udevadm info --attribute-walk --name=/dev/ttyACM0. Why? Who knows.

udev? no, u dev

Wrote up my "learning experience" ordering the wrong MCU board to install Black Magic Probe onto, and how I installed it.

(For the newbie to embedded programming - in which category I include myself - Black Magic Probe is a very neat bit of software that connects GDB to devices ARM Cortex CPUs so you can single-step your embedded code)

https://ww.telent.net/2021/12/19/a_kind_of_magic

take home: "black pill" is, aside from being an unfortunate name for - well, basically anything, a bad choice of name to use for two different boards based on two different MCUs

Good news: I wrote a #fennel program to blink the backlight on my #pinetime

https://github.com/telent/chablon/blob/main/hello.fnl

Next step: write some Lua SPI bindings so I can put pixels on the screen too

(Bad news: my "Hack Magic Probe" (black magic probe on a blackpill) has died, and ST-Link/OpenOCD has significantly less smooth support for RTT, so no more printf debugging)

chablon/hello.fnl at main · telent/chablon

"the French term for a watch movement that is not completely assembled yet."...

GitHub

If you're going to start and most likely some day abandon a smartwatch "OS", you could do a lot worse than call it Chablon

I have made my #pinetime draw coloured rectangles on the screen and learned more about SPI than I thought there was to know.

https://github.com/telent/chablon

GitHub - telent/chablon: "the French term for a watch movement that is not completely assembled yet."

"the French term for a watch movement that is not completely assembled yet."...

GitHub

TIL there are moves to rename SPI terminology from the (problematic) "Master" and "Slave" to "Controller" and "Peripheral". Which is great: words have power.

That said, this evening I'm reading lots of code that abbreviates "SPI Master" to "spim" and thinking that when renaming it I should probably not make the obvious substitution to "spic"

This is just how CMake works: each of its "rules" is concrete; you cannot create a "template rule". The reason for that is platform independence: not every build systems supports "templates" for rules.

No idea if Stackoverflow Guy is correct here, but if so ... eh what? Make exists, and make supports pattern rules, and both these things have been true for several decades longer than CMake has existed, so why do we give a stuff about "platform independence"

It says <info> app: do_lua: ld

The fact that it's logging is a definite quantum of progress, but I rather hoped to see 42 here, not ld

``` int ret = luaL_dostring(L, "return tostring(6*7);"); const char * str = lua_tostring(L, -1);

 if (ret) {
   NRF_LOG_INFO("Error: %s", str);
 } else {
   NRF_LOG_INFO("do_lua: %s", str);
 }

```

Dear Duck Duck Go

When I search for "recognising srecord files", the single most important word in that search term is "srecord". If you give me results for "recognising" and "files" which don't match that middle word, that's not especially helpful

Been doing a lot of !g lately

Daniel Barlow boosted

So I had the idea that the router would default to allowing no incoming connections - because of IoT things and appliances on the LAN which potentially have poor security posture - but that hosts who wanted to run servers could set the no-firewall DHCP user class, and the router would notice this and allow all incoming for them. (This is for IPV6, I have no interest in implementing any v4 port forwarding unless I absolutely have to)

This does feel weirdly like client-side authentication (perhaps because it is?) but right now I'm thinking it's probably OK. The firewall isn't a trust boundary (the LAN is an untrusted network), it's just there to discourage "smart" devices from joining botnets

All that said, getting anything other than a Windows machine to send a dhcp user class is either somewhat involved or significantly impossible.

I won't say it's done, because it's not done. But, I can see the end from here

#nixwrt running on real hardware getting real internet traffic from a real ISP and routing to a local network

#diff-b2672dbec125801aecf42552931f00442ad5aa8d71ef085fd16e39c509573874L3" rel="nofollow">https://github.com/telent/nixwrt/commit/e0217999f6fde51698f66ef48dd83d67a4544e16#diff-b2672dbec125801aecf42552931f00442ad5aa8d71ef085fd16e39c509573874L3

Daniel Barlow boosted

Daniel Barlow boosted