They're buffered



  • This is going back a while, when I worked at a mom & pop retail computer store. We took in a repair for someone who'd tried to build their own PC. The problem was with the sound. As soon as the tech took the cover off, he called us all over to look inside.

    The system had an ISA sound card. The card had a 4 pin CD-Audio IN connector, for audio from CDs played through the CD-ROM. Instead of being plugged into the audio cable from the CD-ROM, the user discovered that a 4 pin power cable could be jammed on to the connector. 

    Amazingly enough, this caused neither smoke nor fire, but it did cause at least one stupid comment. Another tech looked at the machine and said "that shouldn't hurt the card, they're buffered". I believe at the time he was attending college for electrical engineering. We really never tried to find out what he was talking about. He didn't work there for long.

    The card and slot it was plugged into was fried, though the rest of the machine worked normally. 



  • I think he was assuming there was some sort of magical electricity fairy dust that surrounded the pins, preventing surges and such. Buffer as in a physical buffer, not as in "buffering..." or "write to the buffer."

    Buffer is a pretty funny word if you say it a few times. It's like hairy butter.



  • Indeed, it usualy wouldn't hurt the card, except for that it can blow up the buffer. Unless you manage to connect ground to power, then you have lovely smoke. (inserting an USB device the wrong way around causes smoke, and yes, users manage to do this)



  • @Daid said:

    Indeed, it usualy wouldn't hurt the card, except for that it can blow up the buffer. Unless you manage to connect ground to power, then you have lovely smoke. (inserting an USB device the wrong way around causes smoke, and yes, users manage to do this)

     

    I don't think I'm ever going to be able to understand the mentality of such users. "It doesn't fit -- push harder!"  Although some connectors you do have to push quite hard to get on, surely it's just common sense to visually check that the plug you're using will physically go onto the socket you're trying to connect it to. 

    Although, it has been said that the ironic thing about common sense is that it's not common :-/ 



  • @PhillS said:

    I don't think I'm ever going to be able to understand the mentality of such users. "It doesn't fit -- push harder!"  Although some connectors you do have to push quite hard to get on, surely it's just common sense to visually check that the plug you're using will physically go onto the socket you're trying to connect it to.
     

    I suspect the majority of such mishaps occur when the socket is in a difficult to reach place - like the back of a PC, or one near the floor if you have difficulty bending.



  •  @Daid said:

    Indeed, it usualy wouldn't hurt the card, except for that it can blow up the buffer. Unless you manage to connect ground to power, then you have lovely smoke.

     And the plugs are compatible in this aspect - both have ground in the middle two pins:

    So even in the worst case, it should only blow up the input amplifier/buffer stage - and most buffers can handle 12V input without even breaking.



  • At work we had a sales rep jam a USB mouse connector into a parallel port on a notebook. She opened a helpdesk ticket saying her mouse was broken.

    And that is why I am a programmer and not a helpdesk technician. Well, that and self respect.



  • @shakin said:

    At work we had a sales rep jam a USB mouse connector into a parallel port on a notebook. She opened a helpdesk ticket saying her mouse was broken.

    And that is why I am a programmer and not a helpdesk technician. Well, that and self respect.

    I'm not even sure if I could do that.  I just can't see how that can be forced without tools.  Maybe it's just me being obtuse...



  • @CRNewsom said:

    @shakin said:

    At work we had a sales rep jam a USB mouse connector into a parallel port on a notebook. She opened a helpdesk ticket saying her mouse was broken.

    And that is why I am a programmer and not a helpdesk technician. Well, that and self respect.

    I'm not even sure if I could do that.  I just can't see how that can be forced without tools.  Maybe it's just me being obtuse...

    I'm pretty sure I can do that, AND get the mouse to work ;)


  • @Daid said:

    @CRNewsom said:

    @shakin said:

    At work we had a sales rep jam a USB mouse connector into a parallel port on a notebook. She opened a helpdesk ticket saying her mouse was broken.

    And that is why I am a programmer and not a helpdesk technician. Well, that and self respect.

    I'm not even sure if I could do that.  I just can't see how that can be forced without tools.  Maybe it's just me being obtuse...

    I'm pretty sure I can do that, AND get the mouse to work ;)
     

     

    You know, Chuck, sometimes you can be a real asshole.

     



  • @Daid said:

    @CRNewsom said:

    @shakin said:

    At work we had a sales rep jam a USB mouse connector into a parallel port on a notebook. She opened a helpdesk ticket saying her mouse was broken.

    And that is why I am a programmer and not a helpdesk technician. Well, that and self respect.

    I'm not even sure if I could do that.  I just can't see how that can be forced without tools.  Maybe it's just me being obtuse...

    I'm pretty sure I can do that, AND get the mouse to work ;)
     

     Hmm.. maybe if you managed to get the pins meet the contacts.. and if the parallel port was able to supply enough power to the mouse. Then just need sub-microsecond accurate timing (on a x86.. eek) to do USB in software. The voltages and impedances are far off, but with really good luck the signal could get through. Software-based USB implementations exist on Atmel AVR for example :)

    Chuck could definitely do that. 



  • @jpa said:

    Then just need sub-microsecond accurate timing (on a x86.. eek) to do USB in software.

    This is known as "bit-banging" and is really quite easy, people have been doing it for years; it is commonly used in reverse engineering and driver development. Just because you can't do it in VB or .goop doesn't mean that it's hard.

    @jpa said:

    The voltages and impedances are far off

    Actually, the voltages are more or less the same. Impedance is not a major issue unless you're trying to drive the line at the upper limits of its speed, and this is a mouse, so you won't.



  •  For the record, you could do that in VB.

     



  • @asuffield said:

    @jpa said:

    Then just need sub-microsecond accurate timing (on a x86.. eek) to do USB in software.

    This is known as "bit-banging" and is really quite easy, people have been doing it for years; it is commonly used in reverse engineering and driver development. Just because you can't do it in VB or .goop doesn't mean that it's hard.

    The difficult part is the timing accuracy.. cache misses etc. make it difficult, let alone making it portable between processors of different speeds. 

    @asuffield said:

     

    Actually, the voltages are more or less the same. Impedance is not a major issue unless you're trying to drive the line at the upper limits of its speed, and this is a mouse, so you won't.

     

    3.3V vs. 5V, differential vs. absolute, and even low-speed USB needs 1.5MHz bandwidth.. possible, but far off IMO :)

    I guess the hardest part is the reception of differential signals without comparator. Anyone willing to try? ,)



  •  Theres a joke:

    When a psychaiatrist does not know what to do he says "Theres a chemical imbalance".

    When a programmer does not know what to do he says "Its a timing issue".

    I guess this adds:

    When an electrical engeneer does not know what to do he says "Its buffered".



  • @dlikhten said:

    When an electrical engeneer does not know what to do he says "Its buffered".
     

    In my experience, it is usually blamed on a 'bad ground' of some variety.



  • @jjeff1 said:

    We really never tried to find out what he was talking about. He didn't work there for long.

    He obviously felt that his brilliance was being wasted...



  • If he was indeed taking electrical engineering, then maybe he was referring to the tristate buffers on a hardware bus. I guess it makes a modicum of sense - if it's in high-impedance mode, then applying 12 V instead of 5 / 3.3 / 1.5 V probably isn't going to fry anything.

    Having said that, I'm pretty sure those kinds of buffers don't apply to a CDA connector.  I've never heard of such things being buffered at all; it's the CD-ROM drive itself that does the (different kind of) buffering.

    I've also never heard of a programmer using "timing issue" as an excuse.  Every profession has one of these though.

    Doctor: It's stress.
    Psych: It's a chemical imbalance.
    Chiro: It's tendonitis.
    ENT: It's probably just a cold / the flu.
    Mechanic: Needs an alignment.
    Civil Eng: It's a defect in the material.
    Chem Eng: It's impurities in the mixture.
    Elec Eng: It's not properly grounded / it's a short.
    Comm Eng: Too much radio interference.
    Construction: It's a problem with our supplier.
    Programmer: It's a database issue.
    DBA: It's a code issue.
    Helpdesk: It's an ID10T / PEBKAC / Microsoft issue.
    Sysadmin: Cosmic Rays / Solar Flares / [insert BOFH reference here]
    Project Manager: The budget's too small.
    Finance Manager: The project's been mismanaged.

    And so on... 

    <hints id="hah_hints"></hints>


  • @PhillS said:

     

    I don't think I'm ever going to be able to understand the mentality of such users. "It doesn't fit -- push harder!"  Although some connectors you do have to push quite hard to get on, surely it's just common sense to visually check that the plug you're using will physically go onto the socket you're trying to connect it to. 

     

     

    And, to add, I have seen badly-built computers where power and ground connections were reversed in the front USB ports. So the user plugged in a device and there goes it.

     



  • I actually did use "cosmic rays" on someone once, but unfortunately didn't have the heart to take it beyond a minute or so.



  • @shakin said:

    we had a sales rep jam a USB mouse connector into a parallel port on a notebook

    The parallel port on a machine is not a hole.

    I think you mean the ethernet connector. And you don't have to jam it -- it fits quite comfortably, width-wise. But only on laptops. On normal PC cases, you can't fit an USB plug into an ethernet card. Go figure.



  • @jpa said:

    The difficult part is the timing accuracy.. cache misses etc. make it difficult, let alone making it portable between processors of different speeds.

    Much easier than you think, it's all interrupt-driven.

    @jpa said:

    3.3V vs. 5V,

    USB is not a strict 3.3V system, it will accept any logic levels of about 0..0.5V for low and in practice anything 2.5..6 for high. Parallel port outputs are close enough.

    @jpa said:

    even low-speed USB needs 1.5MHz bandwidth

    No. This is a popular but wrong notion. Low-speed USB is limited to 1.5MHz bandwidth. It does not need this much bandwidth, and under normal circumstances it does not use it.



  • @asuffield said:

     

     Much easier than you think, it's all interrupt-driven.

     

    More like thight assembler loop.. I can hardly imagine interrupts on x86 triggering fast enough for the 1.5MHz bandwidth (which I still consider a necessity). 

    @asuffield said:

    USB is not a strict 3.3V system, it will accept any logic levels of about 0..0.5V for low and in practice anything 2.5..6 for high. Parallel port outputs are close enough.

     

    Problems may arise when the voltage doesn't rise fast enough to trigger the 5V reception in the parallel port. Though you are partly right, it probably is not the biggest problem. 

    @asuffield said:

    No. This is a popular but wrong notion. Low-speed USB is limited to 1.5MHz bandwidth. It does not need this much bandwidth, and under normal circumstances it does not use it.

     

    Hmm.. I thought USB was asynchronic, and transmitted at a constant baudrate. According to Beyond Logic, "Low speed data is clocked at 1.50Mb/s with a data signalling tolerance of ±1.5% or 15,000ppm". So, even though the bus might be idle most of the time, during packets you would have 1.5MHz signals.



  • @dhromed said:

    I think you mean the ethernet connector. And you don't have to jam it -- it fits quite comfortably, width-wise. But only on laptops. On normal PC cases, you can't fit an USB plug into an ethernet card. Go figure.

     

    Ah, so I'm not the only person to do this. The ethernet port on the back of my work laptop is in the same place as the USB port on my home laptop, so about one time in ten, I'll be muttering to myself about the mouse not working. the tactile feedback of the insertion is only slightly different, so if I'm not paying attention, I don't notice my mistake.



  • @PhillS said:

    Although, it has been said that the ironic thing about common sense is that it's not common :-/ 

     

    And when it is, it's often not sense.  Remember, common sense is what tells you that the Earth is flat! 



  • @jpa said:

    @asuffield said:
     

     Much easier than you think, it's all interrupt-driven. 

    More like thight assembler loop.. I can hardly imagine interrupts on x86 triggering fast enough for the 1.5MHz bandwidth (which I still consider a necessity).

    Yep, you're completely correct there.  The driver would basically have to lock out OS scheduler, take complete control of the machine and hit the metal directly.  It is of course possible - anything's possible if you're willing to put ridiculous amounts of effort into it for very little reward...

    @jpa said:

    @asuffield said:

    USB is not a strict 3.3V system, it will accept any logic levels of about 0..0.5V for low and in practice anything 2.5..6 for high. Parallel port outputs are close enough.

     

    Problems may arise when the voltage doesn't rise fast enough to trigger the 5V reception in the parallel port. Though you are partly right, it probably is not the biggest problem.

    It just won't work.  If you shove one half of a differential pair onto a parallel port line without doing something sensible to the other half, the signal as measured at the pins of the parallel port controller will just be flapping up and down in the breeze. 

    @jpa said:

    @asuffield said:

     

    No. This is a popular but wrong notion. Low-speed USB is limited to 1.5MHz bandwidth. It does not need this much bandwidth, and under normal circumstances it does not use it.

     

    Hmm.. I thought USB was asynchronic, and transmitted at a constant baudrate. According to Beyond Logic, "Low speed data is clocked at 1.50Mb/s with a data signalling tolerance of ±1.5% or 15,000ppm". So, even though the bus might be idle most of the time, during packets you would have 1.5MHz signals.

     

    Yep, you're absolutely correct there.  Think of it like a serial port: you may be only sending a single char every half-an-hour, but if the baud rate is 115200, you still have to be able to flip the TXD line every 8.68 microseconds during the time you're sending that one char.



  • Forget about software reasons why it won't work; the parallel port just isn't designed to drive USB without at least some kind of adapter. The bus is LVDS where both data lines need to be mark/set at the same time. And the bus is half-duplex so you also have to have the right pulldown resistors, diodes and such to hook up both the RX/TX pins you'll need to D+/D- both while matching the bus impedence otherwise the far end will think it's NC. And you have to do an NRZI encoding with bit stuffing the generate the frames.  And the USB protocol requires the host to poll every endpoint in order to receive data. And the host has to send requests once every few ms to keep the bus from going into powersave...

    Suffice to say you at least need a dongle to support the bus electrically, if not to handle the very tricky minutae of the lower levels of the protocol.


Log in to reply