Since everyone here seems to love cursed technology, I made a chart rating various interfaces by their perceived cursedness.
Some like 10G BASE-T have a reason for being cursed, whereas others like USB PD not so much.
Any additions?
Since everyone here seems to love cursed technology, I made a chart rating various interfaces by their perceived cursedness. Some like 10G BASE-T have a reason for being cursed, whereas others like USB PD not so much. Any additions? 96 comments
@janamarie @kloenk @karotte the stm32 can also speak SWP which is a full duplex protocol on one wire using voltage modulation in a direction and current modulation in the other one, and is only specifically used by some sim cards NFC interfaces yet they did some silicon IP just for it. speed low, curse high. @leah The only cursed experience I had with UART was when implementing a soft UART transmitter, didn't leave enough time between two bytes and sometimes the receiver and the protocol decoder in my scope got confused about the byte boundaries. Adding a couple bits of idle time between two bytes fixed it. @karotte @leah in practice: many of the very established UART controller IP cores simply have state machine bugs – Cadence, things that ended up in FTDI converters, Zynqs, … @leah @filmroellchen @karotte it’s modified RS-232, with the only important change being lower voltage levels and a lot of removed pins i’d argue that it’s at least based on a standard ^^ @vogelchr @jomo @miketango @karotte please move USB3 up by a ton. USB FS itself isn't quite that cursed. HS is ... J and K whistle level of cursed. USB3 is that plus a ton more. Only thing about USB FS and LS that's cursed is the host controllers. @karotte How about data over power line stuff? That’s pretty cursed. https://en.wikipedia.org/wiki/IEEE_1901 Or the CCS Combo plug, which is cursed at both the physical and data layers: https://en.wikipedia.org/wiki/Combined_Charging_System @lschuermann Wanted to keep it a fair game for the wired protocols. Even though some of the wired protocols (looking at 10GBASE-T) start to look a lot like RF. @lschuermann@chaos.social @karotte@chaos.social More like "we just need a badly shielded cable can replace [fiber optics] for cheap!" @karotte I don't understand how USB 3.0 and PCIe are less cursed than CAN. And how I2C is more cursed than CAN. @rappet @karotte Oh, I2C, the horrors. I once spent two weeks full time debugging an issue where we'd misconfigure PLLs from a reputable manufacturer via I2C that was bridged over a debug interface. We ended up debugging this with an oscilloscope to see a tiny change in the pull down strength of the PLL which eventually led us to figure out that the manufacturer actually implemented an SMBus without telling anyone, along with a non-configurable and undocumented SMBus timeout. @lschuermann @rappet @karotte Yeah, I'm pretty much on the I2C is more cursed than CAN side there. @rappet Things that make CAN somewhat cursed: - Other than every (?) other differential signalling standard, it uses 0V and a positive voltage rather than a negative/positive voltage USB 3.0 and PCIe on the other hand are straightforward 8B/10B (or other) coded data down unidirectional lanes. @brouhaha https://www.ieee802.org/3/an/public/sep04/ungerboeck_2_0904.pdf It's basically wireless, but with wires. @wolf480pl I was never unlucky enough to have this problem for myself, but most advice for stuck I²C busses seems to be 'send some number of clock pulses and hope for the best'. If that doesn't work, power cycle your system. @karotte power Extension to USB-c cable i wonder what happens if u use power line lan on it: https://eldritch.cafe/@nachtpfoetchen/113744370531601191 @karotte quad SPI, or SD/MMC signalling (which despite being close to SPI, in some modes can also grow legs and become DDR) should be both a bit faster and much more cursed @karotte since the copper ethernet standards are here, we can’t forget about QSFP and its many amalgamations for 40/50/100/200/400/800 Gbit speeds! Infiniband and Fibre Channel get honorary mentions too @r @karotte May we also add semi-standard car interfaces before CAN? OBD II in general is a horrid mess! @karotte Okay but we need to be calling 10/100 Fast Ethernet like God (Al Gore) intended @karotte RS-485, low speed low cursedness (termination required but other than that it's a pretty simple multidrop bus) PoE++, full speed mid-high cursedness (isolation requirements, complicated negotiation, generally annoying to design for) @karotte Powerline network - near max cursed, somewhere between 10M and 200M depending on wiring and luck and the phase of the moon @gsuberland @karotte I must admit 10GBase-T feels about as cursed as 1OOOBase-T; less abuse of twisted pair to microwave frequencies, none of the original PAM-5 encoding, and more sensible FEC design, imho. I wonder where people would put V.90 – there's so much interesting stuff you have to pry from the devil's hot fingers in order to do 56 kb/s over a truly analog line, with a draconic bandwidth and power limit. @funkylab @gsuberland @karotte What about Thunderbolt? A huge pain in the neck, but super fast. And 10Gbase-R / 25Gbase-R (exponentially faster and not all all cursed) @azonenberg @gsuberland @karotte I'm not very familiar with that, but I think the PHY is relatively similar to modern PCIe, so that would make it relatively uncursed. But the USB4 encapsulate-everything-in-everything has potential for much cursing, will see how that turns out! @azonenberg @gsuberland the cursed thing about USB4v2 is that it uses PAM3 on the physical layer. @karotte @funkylab @gsuberland Yes, PAM3 is annoying. Especially because ~nothing COTS can do PAM3 so there's no hope of speaking it with an FPGA transceiver etc. @azonenberg @karotte @funkylab @gsuberland just out of curiosity, what stops you from configuring the transceivers to PAM-4 and then just not using either the top or the bottom level? Do you get into trouble with level symmetry? @jaseg @karotte @funkylab @gsuberland For TX, I think it would work. For RX, I think you'd run into problems with asymmetry and the baseline wander correction putting your thresholds in the wrong place. @jaseg @karotte @funkylab @gsuberland (also even PAM4 transceivers are really rare, only like the biggest virtexes have them right now) @azonenberg @gsuberland @karotte The low-speed optical modes like that are relatively OK, it's basically linecode directly onto a laser that's either on or off, or PAM4. "infinite bw" assumption, pretty much. The actual long-distance (read: transatlantic) and high-rate (read: Tb/s) stuff is where the interesting stuff happens; 90 Gbd coherent IQ dual-pol xceivers, non-equal-prob'lity symbols and/or non-regular constellation diagrams, nonlinear-channel equalizers, FEC codewords of scary lengths… @azonenberg @gsuberland @karotte ( … and that's before you learn about the fact that in long-haul connections, you need to put in as much power as you can to get good OSNR at the output, but not as much that your mutual information per symbol drops due to phase smear due to fiber medium nonlinearity at high E-field strengths, but still want to do wavelength multiplex with only small guard bands between the carriers, but of course wavelengths' powers will mutually cause nonlin./phase distortion) @funkylab @gsuberland @karotte Oh I bet fiber gets cursed when you go fast enough. But at 10/25G its easy. @azonenberg @funkylab @gsuberland @karotte I'd argue the FEC layer in 25GBASE-R is cursed due to all the transcoding and gearboxes to convert 80 64b66b codewords to one 5140b block to append the 140b parity resulting in the same 5280 bits. It's not pretty. 25GBASE-CR-S is nice and pure like 10GBASE-R but the FEC layer is required in everything else 25GBASE-R. The FEC itself isn't cursed just the wrapper around it. @dlharmon @azonenberg @funkylab @gsuberland @karotte @karotte Would swap PCIe and USB4 if you restricted USB4 to thunderbolt mode only. PCIe is a 7 layer dip where only the top 2 layers are edible. @karotte I have no additions, but I'd like to argue that PCIe should be moved much higher on the "cursed" axis: https://weirder.earth/@puppy/113847743407279801 @karotte@chaos.social I'll be a contrarian and will say that USB PD has plenty of reasons to have weird stuff in it. @karotte usb pd is to silly to be cursed, there should be some kind of measurement for silly on here @karotte I3C, available in SDR, DDR, two different types of ternary, and a new "bulk transport" mode that I can't seem to find anything about! IIRC it also has a recommended "the bus has been idle for too long in the middle of a transaction so we'll assume it got stuck and unstick it" timeout. @karotte Reading about 10GBASE-T on Wikipedia: "10GBASE-T has a slightly higher latency (2 to 4 microseconds) ..." WTH?! I've seen applications respond faster than this over TCP, as measured on the wires outside the server using optical taps! @karotte irda. It's UART but optically cursed. How do you determine the cursedness? Is it how hard the interface is to implement, or how the world will perceive you trying to bit-bang it, or some particular quirks that stand out but are needed for backwards compatibility or other reasons? |
@karotte @nblr Infiniband.... Ethernet.... DOCSIS..... ;)