@azonenberg@ioc.exchange
@azonenberg@ioc.exchange avatar

azonenberg

@azonenberg@ioc.exchange

Security and open source at the hardware/software interface. Embedded sec @ IOActive. Lead dev of ngscopeclient/libscopehal. GHz probe designer. Open source networking hardware. "So others may live"

Toots searchable on tootfinder.

This profile is from a federated server and may be incomplete. Browse more on the original instance.

MLE_online, to random
@MLE_online@social.afront.org avatar

Who really needs a bike with this many speeds? By the time you add a front derailleur, that's 24 or 36 speeds! Dumb!

azonenberg,
@azonenberg@ioc.exchange avatar

@MLE_online But what if you really really need just one more tooth on the sprocket because 34th gear is too easy and 35th gear is too hard?

azonenberg,
@azonenberg@ioc.exchange avatar

@MLE_online "I heard CVTs were expensive and flaky so I got almost-CVT the old fashioned way"

azonenberg,
@azonenberg@ioc.exchange avatar

@MLE_online The only gotcha is that whatever efficiency you gain that way is more than made up for by the gear train that weighs more than the rest of the bike combined :)

RichiH, (edited ) to random
@RichiH@chaos.social avatar

Innovation idea specifically for the US and Italian markets: half-ply toilet paper.

Hotels there would fall over themselves trying to get their hands on it.

azonenberg,
@azonenberg@ioc.exchange avatar

@RichiH Half ply? I'm picturing a paper doily lol.

azonenberg, to OSINT
@azonenberg@ioc.exchange avatar

Time for another puzzle!

  1. Where was I? Be as specific as possible, this one should be possible to pinpoint to within a meter or two.

  2. When was the photo taken? You should be able to get +/- 1 day based on open source information (including, but not limited to, the photo itself).

  3. Why was I there?

Please CW guesses or comments to avoid spoilers.

hyde, to gaming
@hyde@lazybear.social avatar
azonenberg,
@azonenberg@ioc.exchange avatar

@hyde Link is 404. Unless that's part of the game?

azonenberg,
@azonenberg@ioc.exchange avatar

@hyde NVM must have just been cached. Works now.

azonenberg,
@azonenberg@ioc.exchange avatar

@hyde Anyway, I post challenges like this from time to time, I'll add the hashtag to future ones so folks can join in.

azonenberg, to random
@azonenberg@ioc.exchange avatar

So apparently Blahaj literally means "blue shark".

Do other Ikea products have equally descriptive names that translate to "small table" or something? I've never actually looked up translations for them.

azonenberg, to random
@azonenberg@ioc.exchange avatar

I've owned the domain serd.es for a long time but haven't used it for anything.

Debating setting up a personal website on it (as opposed to my lab one) or using it for something else high speed digital related.

doc, to random
@doc@mastodon.social avatar

Update on my essential sailing dashboard: it’s now got lighting (LED filament) and an external environmental sensor. E-ink display ensures the readout remains of the last position when shit hits the fan and you lose all power.

Now it’s maybe time to think about a custom PCB and turning it into a tiny production product for all those long-distance sailors out there 😅.

azonenberg,
@azonenberg@ioc.exchange avatar

@Dtl @doc I've started using eink for rackmount equipment debug front panels for similar reasons: it can display sensor data and system health states when running, then if you shut the thing down to work on it the IP address, serial number, etc. remain visible.

ashten, to random

oh no... the clocks have coil whine

azonenberg,
@azonenberg@ioc.exchange avatar

@ashten Time to open them up and add some potting to the offending inductors?

azonenberg,
@azonenberg@ioc.exchange avatar

@ashten Because they were probably designed by middle-aged engineers who can't hear 15 kHz no matter how loud it is?

azonenberg,
@azonenberg@ioc.exchange avatar

@ashten (my hearing is still in decent shape apparently... just checked and I can hear 15.5 kHz pretty clearly but 16 starts to roll off and I'm not hearing 17 at all. Although I don't have any idea how flat the response of my sound card or headphones are that high up.)

kwf, to random
@kwf@social.afront.org avatar

I'm thinking about just ripping autotools out of this project and if your environment can't handle an 8 bit char I'm going to just tell you that your environment isn't supported

azonenberg,
@azonenberg@ioc.exchange avatar

@kwf I'm all for that. Autotools includes lots of checks for really, really obscure platforms that use EBCDIC and odd-sized chars and generally things that no computer made this century probably has.

For libscopehal and ngscopeclient, I made an executive decision - driven in no small part by limited engineering resources - to only support little endian 64-bit platforms with Vulkan 1.0 available.

So basically Linux, MacOS, Windows on x86-64 or ARM64.

ezio, to random
@ezio@akko.wtf avatar

this is what i need for intel bluetooth to work, i think

now i have to look at the wifi drivers

azonenberg,
@azonenberg@ioc.exchange avatar

@ezio Because flash IPs are expensive so if you want the cheapest possible silicon design, you don't want to have internal config memory.

Which means either external flash (like the ESP32) or a tiny ROM that downloads application code on startup (like the FX2). The latter option avoids the cost of even putting a $0.25 flash chip on the board.

eniko, to random
@eniko@peoplemaking.games avatar

Do not understand why people always use bloated third party json libraries and then complain about it when I've seen people using pico 8 create json (de)serializers in like 15 lines of code

azonenberg,
@azonenberg@ioc.exchange avatar

@eniko Yeah this is something I was very careful about in ngscopeclient (which uses YAML metadata + binary waveform blobs, but the concept stands).

I've gone through several major iterations of the file format plus constant iterations adding features and settings, and I need to make sure that old files load in at least some semblance of correct state. No real way to do that other than manually.

lethalbit, to random
@lethalbit@chaos.social avatar

I don't see many KiCad projects with detailed notes in the board files or schematic, which is kinda sad because it's a great way to keep notes for reference and important design descriptions.

My KiCad schematics and board files are absolutely littered with notes, with things from calculations for things to why things are done they way they are.

I wish more people would do it, makes things easier on everyone.

azonenberg,
@azonenberg@ioc.exchange avatar

@lethalbit @gregdavill I normally have the first/top level page just be connections between other sheets and some high level notes, but not to that extent. Fab notes live separately.

gigabecquerel, to random
@gigabecquerel@chaos.social avatar

Because I'm a bit sick at home and don't have enough projects already I started another, albeit small, project. Making a mould to make a mould, to cast some epoxy and to make use of my ZnS:Ag I have here ;-)

image/jpeg
image/jpeg

azonenberg,
@azonenberg@ioc.exchange avatar

@gigabecquerel Nice! Did you vacuum degas the resin? What resin were you using?

I've had the best luck lately with Atom Adhesives AA-Bond F113 which is ultra low viscosity (175 cPs mixed).

azonenberg,
@azonenberg@ioc.exchange avatar

@gigabecquerel I've had good luck with Mann Inhibit-X on resin prints.

azonenberg, to random
@azonenberg@ioc.exchange avatar

New thread on my big ongoing embedded project since the other one was getting too big.

To recap, this is a pilot project for a bunch of my future open hardware T&M and networking projects, validating a common platform that a lot of the future stuff is going to run on.

The primary problem it's trying to address is that I have a lot of instrumentation with trigger in/out ports, sometimes at different voltage levels, and I don't always have the same instrument sourcing the trigger every time.

So rather than moving around cables all the time and adding splitters, attenuators, amplifiers, etc. to the trigger signals I decided to make a dedicated device using an old XC7K70T-2FBG484 I had lying around.

Of course, as with any project, there was feature creep.

I'm standardizing on +48V DC for powering all of my future projects as it's high enough to move a lot of power but low enough to be mostly safe to work around live. So I needed to design and validate an intermediate bus converter to bring the 48 down to something like 12 for the rest of the system to use.

The FPGA has four 10G transceiver pairs on it. I used one for 10GbE (not that I need the bandwidth, but I was low on RJ45 ports on this bench and had some free SFP drops) and the rest are hooked up to front panel SMA ports (awaiting cables to go from PCB to panel) to generate PRBSes for instrument deskew.

Since I'm pinning out the transceivers and am planning to build a BERT eventually, I added BERT functionality to the firmware as well (still need to finish a few things but it's mostly usable now).

And since I have transceivers and access to all of the scope triggers, it would be dumb not to build a CDR trigger mode as well. That's in progress.

azonenberg,
@azonenberg@ioc.exchange avatar

Hmmm. Flashing the main MCU is failing about 3/4 of the way through the SFTP upload, consistently giving a GCM verification error at a specific packet.

This will be fuuuun to debug.

azonenberg,
@azonenberg@ioc.exchange avatar

Not yet pushed but it was a bug in the ssh server stack.

Since SSH PDUs can span multiple TCP segments (or have several packed into one) I buffer incoming TCP data and pull PDUs out whenever I have one fully received.

The logic to check if you've fully received a packet was subtly broken: it checked for the length field itself plus the size of the packet, but not the GCM tag.

So if you had a SSH PDU that was striped across TCP segments such that some of the GCM tag bytes, but none of the packet body, were in another TCP segment it would try to decrypt early and check the calculated MAC against whatever garbage was in the RX buffer - almost certainly failing as a result.

Now I'm fully flashing the firmware and segfaulting when I try to boot it. That's a tomorrow problem, I already think I know what's going on (. data program header not being aligned to flash write block boundaries causing ECC errors during the pre boot CRC check).

I need to disable "ECC failure -> segfault" during the bootloader CRC so bad flashes like this will fall back to DFU mode again rather than segfaulting the bootloader.

azonenberg,
@azonenberg@ioc.exchange avatar

Nothing like miscalculating the size of your application firmware partition and accidentally erasing your data region of flash too.

It's not like I actually needed to know my IP address and SSH host key or anything.

azonenberg,
@azonenberg@ioc.exchange avatar

So it turns out I actually had two bugs in the flash erase logic corrupting my settings: off-by-one bitmasking the sector number being erased, and off-by-one calculating the number of sectors to erase.

Now I can erase flash without losing config, write the entire ELF to flash, and fail to boot due to a CRC mismatch between the data I thought I wrote and what I actually see in flash.

So now I have to troubleshoot that...

azonenberg,
@azonenberg@ioc.exchange avatar

Aaaand fixed. yet again, two bugs: the reference data I was checking the CRC against offline was incorrect so I spent half a day chasing bugs that weren't there.

And then the actual bug was miscalculating how much 0xffff padding to add to the CRC to fill the entire flash partition.

Anyway, I can now just SFTP an ELF binary to /dfu/mcu to flash the board! Next step is to add OTA support for the FPGA and I think I'll have a fully SSH-flashable system (other than the two STM32L0s in the power supply / reset system which will not be OTA-able due to lack of flash space for a recovery image + app firmware)

Serial console showing the last few blocks of data being written to flash, CRC verification, and successful boot of the application

  • All
  • Subscribed
  • Moderated
  • Favorites
  • normalnudes
  • GTA5RPClips
  • osvaldo12
  • thenastyranch
  • DreamBathrooms
  • everett
  • magazineikmin
  • InstantRegret
  • Youngstown
  • slotface
  • mdbf
  • love
  • kavyap
  • rosin
  • megavids
  • khanakhh
  • modclub
  • ethstaker
  • Leos
  • ngwrru68w68
  • Durango
  • tacticalgear
  • cubers
  • anitta
  • provamag3
  • tester
  • cisconetworking
  • JUstTest
  • All magazines