21

I know what full and half duplex is, but in all respects full duplex has more advantages, so why use half duplex at all, in other words: In full duplex connection , the bandwidth doubles and collision does not occur, so why is there half duplex at all and it has not disappeared?

11
  • 32
    Same answer, different question. "There is extremely fast internet in the world. Why does not everyone has fast internet?" – LPChip May 2 at 12:49
  • 1
    @LPChip You want to say that half duplex is used because of such costs and cases – Truth May 2 at 13:05
  • 2
    Yes, manufacturing costs and volume of manufacture do play a part in this. I added a footnote about this in my answer. Same as: up to manufacturers how they implement. – John May 2 at 13:14
  • 2
    Copper was costly. – H2ONaCl May 2 at 23:16
  • 2
    @JohnMeacham, but there are other limiting factors, which... tend to come down to cost. By your logic, I ought to trunk 10 Cat6 cables to my computer, or 10 SATA cables to my SSD. But I don't, because the bandwidth I have is sufficient for what the devices on the ends can handle. In fact, while your argument looks logical, I think it fails in the many modern instances when we can generally throw enough wires at the problem that something else becomes the bottleneck. – Matthew May 4 at 20:46
64

Full duplex requires more than half duplex.

Typically full duplex is achieved by having two separate data paths. That means two sets of wires, separate sets of transmission and receiving electronics and a controller that has both input and output buffers and electronics.

Half duplex is simpler, has lower requirements and just needs you to have some form of protocol to handle or avoid collisions. If all the transfers are mostly in one direction then full duplex offers very little benefit over half-duplex and has a higher cost. Also if the majority of transfers are tiny (mice, keyboards, etc) then again full duplex is a waste.

USB1 and USB2 is half duplex. It has only one bidirectional signal pair. While we have connected hard disks and USB sticks to them the hard drives are the only time we came close to saturating the connection. USB sticks typically had 5-15MB/s transfer speeds that left enough bandwidth for other devices. It is only recently that more typical high speed devices have become more common.

USB3 has separate TX and RX pairs and is intended for far faster transfers hence it makes more sense to integrate full duplex control. We use it for multi-gigibit data transfers and displays and other devices. At higher speeds collisions cost more downtime and requires larger and larger buffers in the event that transaction need to be retransmitted so it makes more sense to integrate full duplex.

In general the question you need to ask isn't "why doesn't everyone use full duplex?" But "Do I need full duplex and the extra cost of design, extra electronics, cable with more wires in it and so on?"

9
  • 8
    Also a full-duplex connection can only be between two devices. You can plug 3 or more things into a half-duplex connection (which I guess makes it third-duplex, quarter-duplex, ...) – user253751 May 3 at 12:30
  • 3
    @user253751 we would typically call that "multi-drop" as the connection is still half-duplex, only one device can be transmitting at a time with all others being passive listeners. Typically in that arrangement you have devices set up with an address as part of the protocol and a challenge-response arrangement with the main "server" device requesting data from each client device in turn. An example: brooksinstrument.com/en/blog/… – Mokubai May 3 at 12:39
  • 1
    @Mokubai Or with something like CSMA to handle collisions, like hub based ethernet network, or wireless protocols which are effectively using a half-duplex connection over the radio. – user1937198 May 3 at 14:18
  • @user253751 I thought about adding that note, too -- but then realised that technically, multipoint ability is orthogonal to duplex. You can very well have full duplex with multipoint if you add a second channel for transfer in the other direction. – ivan_pozdeev May 3 at 18:55
  • @user253751: It's possible to use full duplex with an arbitrary number of devices if there is a single coordinator which is the originator or recipient of every individual transmission. The coordinator transmits on A and listens on B, while all other devices do the reverse. This can be a useful arrangement with things like sensor arrays. It requires more cabling than half-duplex, but the hardware is otherwise pretty similar. – supercat May 3 at 18:57
22

With the exception of some networking connections (e.g., router to internet, server to local network), most usage - whether older serial or parallel, USB, ethernet or almost anything else is mostly one direction either all the time or most of the time. Some examples, in both low and high (relatively) speed connections:

  • Keyboard, mouse, other user input - almost entirely from device to host computer, with very little (e.g., some configuration, set keyboard lights) in the other direction
  • Cameras - still or video - almost everything device to host computer
  • Printers - almost everything host computer to device
  • Scanners - almost everything device to host computer
  • Multi-function printer/scanner - in almost all cases, only one function is really going on at any time - either printing (host to device) or scanning (device to host)
  • Network - with some exceptions, most ordinary user computer network usage is mostly in one direction at any point in time - e.g., streaming video from router/internet to computer, upload files from computer to router/internet. There is some overlap particularly if there is heavy usage of shared files or any kind of server (web server, file server, etc.) and those are situations that truly benefit from a full duplex connection.

There is some more routine usage these days that is more symmetric - Zoom and other video conferencing that has both a video stream going out and a video stream coming in. But typical usage is a couple of megabits in each direction, which even a 100 Meg. half-duplex connection should be able to handle with plenty of room to spare.

End result: For competitive reasons with every penny counting on the small stuff (USB devices) and every dollar on the big stuff (computers), manufacturers will use half-duplex connections when they can, provided it has no noticeable impact on usability.

6

Some protocols are inherently send-and-wait, these include USB 2 (and below), Modbus, and 1-wire protocol. In these protocols, there is one controller, and several devices. The Controller interrogates a Device, and waits for a reply. Until the Device replies (or is timed out), the Controller can't interrogate another device. With these protocols there is little advantage to having a different reply path.

3

Half duplex is almost always more efficient and faster.

For any data channel you have limited bandwidth, declaring something "full duplex" doesn't change that. Your DSL line has to allocate different parts of its bandwidth to uploading vs downloading. Wifi signals can only transmit so much before they start interfering. Generally if you allocate more bandwidth to upload, you have less for download and vice versa. This is true of pretty much every media.

You can route two wires to get full duplex to somewhere, but then only half your full bandwidth is used for each direction because you could have had both wires transmitting the same direction if one side was more chatty.

Unless you are expecting exactly the same constant amount of data in both directions always, full duplex doesn't make much sense. It makes much more sense to utilize your full bandwidth for whomever needs to talk at a given time so they can finish what they have to say quickly and let someone else talk. If you remember modems and the speed jump that happend with the V.92 standard, it was due to being able to switch from a full duplex to a half duplex mode that allowed that happen. so it could dedicate the full bandwidth to downloading rather than constantly reserve some for uploading. Half duplex made things significantly faster.

Additionally it is a whole lot harder to do multi-drop protocols full duplex. When you have a dozen devices connected to the same I2C, CAN-BUS, RS485 or whatnot line then who is the full duplex connection between? everyone hears what everyone is saying.

There are some times where full duplex does make sense in a limited situation, sometimes you actually have the extra bandwidth so are okay wasting some on the unused channel because the improvement in throughput is worth it or the characteristics of what it is used for makes full duplex more natural. short distance mass storage interfaces come to mind, like SATA. where you expect a large amount of traffic in both directions and the cost of idle copper isn't that big a deal when it only needs to go a few feet.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.