[HN Gopher] Apple Desktop Bus Protocol (2021)
       ___________________________________________________________________
        
       Apple Desktop Bus Protocol (2021)
        
       Author : dcminter
       Score  : 45 points
       Date   : 2025-11-30 13:39 UTC (3 days ago)
        
 (HTM) web link (www.lopaciuk.eu)
 (TXT) w3m dump (www.lopaciuk.eu)
        
       | addaon wrote:
       | ADB was pretty solid. A shared-single-wire bus that allows
       | multiple slaves by including an address in the message... but
       | includes a protocol-level reset that's used regularly, so a
       | missed single bit doesn't jam things up unrecoverably. When I
       | think of how many fewer hours of my life I would have wasted had
       | I2C learned this lesson...
        
         | buildbot wrote:
         | Oh is that why I2C seems to just hang/break whenever I use it
         | for a DIY project? Does everyone just reset the bus all the
         | time?
        
           | addaon wrote:
           | The I2C protocol is a distributed state machine. Each slave
           | node needs to know what bit in the message sequence is being
           | sent, to match it against its own address. As a result, a
           | single missed bit results in a slave not recognizing its own
           | address and going dark -- or, worse but rarer, potentially
           | recognizing its address in the midst of data sent to another
           | slave, and responding inappropriately. Observing this in a
           | real system indicates either a signal integrity issue or a
           | bug, but signal integrity issues do happen, and this non-
           | recoverable behavior is somewhat unique to I2C, and somewhat
           | cursed, turning what would be a transient error into a
           | permanent one. In practice, most I2C devices have some
           | mechanism for recovering (sufficiently long pulse on clock
           | line, so many clock edges all low, a dedicated reset pin);
           | and for the few that don't, forcing a reset of the device
           | through a high-side drive or similar works fine; but the fact
           | that these mechanisms are outside of the protocol, rather
           | than inside it, is also cursed, and means that for an I2C bus
           | of mixed devices there's not guaranteed to be a single method
           | acceptable to all of them.
        
           | eternityforest wrote:
           | Yes, but every device is slightly different and sometimes you
           | need obnoxious hacks to even detect that there is a problem
           | at all...
        
       | korhojoa wrote:
       | As the author mentions doing it, a note regarding retrobright: it
       | seems to cause faster yellowing than not using it.
       | https://youtu.be/_n_WpjseCXA
       | 
       | Maybe just let your items show their age.
        
         | inferiorhuman wrote:
         | Honestly it'd be really cool to see some repro parts for these
         | like an upper case (even without the Apple logo).
         | 
         | I junked my old AE2 ages ago and finally got a replacement
         | today. If I knew then what I know now I would've salvaged a
         | bunch of stuff off of it. Oh well.
        
       | zdw wrote:
       | Has anyone calculated or measured the input lag of ADB vs other
       | protocols such as PS/2 or USB? This is unfortunately hard to
       | search because most references on the web to ADB are for the
       | Android Debug Bridge.
       | 
       | From the numbers given, it seems like ~2ms to send a packet (my
       | math may be off), which is quite good when compared with other
       | contemporary/modern protocols (see: https://danluu.com/input-lag/
       | for examples)
        
       | justin66 wrote:
       | It's okay. It's not as good as the SIO that came with the Atari
       | 8-bit computers, but it's alright.
        
       ___________________________________________________________________
       (page generated 2025-12-03 23:00 UTC)