USB 2.0 과 3.x의 컨넥터 호환성

지난 글에서 설명했듯이 USB 2.0에서는 VCC/GND/D+/D- 4개의 케이블이 있기 때문에 4개의 핀만 필요하다. USB 3.x 케이블을 위해 필요한 케이블은 VCC/GND와 고속 전송을 위한 두 쌍의 레인(SSRx+, SSRx-, SSTx+, SSTx-라고 한다. 이에 대한 자세한 설명은 다음 기회에 하도록 하겠다.) 그리고 혹시 차폐에 쌓여있을 수 있는 노이즈를 접지로 보내 안전하게 제거하기 위한 GND_DRAIN 케이블까지 총 7개의 케이블이 사용된다. 이 중 VCCGND는 USB 2.0에서 사용하는 선과 공유하기 때문에 새로운 5개의 선이 더 필요하다.

USB 3.0 Type B USB 3.0 Micro B SuperSpeed
이미지 출처: Wikipedia 이미지 출처: Wikipedia

이 5개의 선을 핀에 연결하기 위해 USB 3.0 표준은 새로운 모양의 Type B 컨넥터를 도입했다. 기존 Type B 컨넥터는 4개의 핀만을 가지고 있고 확장할 수 없는 구조로 돼있기 때문이다. 따라서 Type B 컨넥터의 경우에는 컨넥터 모양만으로도 USB 2.0 케이블인지 USB 3.0 케이블인지 쉽게 구분할 수 있다.

하지만 Type A 컨넥터나 Type C 컨넥터는 상황이 다르다. 상하 대칭으로 24개의 핀을 가져 최대 12개의 선을 연결할 수 있는 Type C 컨넥터는 컨넥터 모양 만으로 USB 2.0 케이블인지 USB 3.x 케이블인지 구분할 수 없고, 케이블에 SuperSpeed 로고가 있는지 확인해야 한다. 그렇지 않으면 다음과 같이 Type C - Type C 케이블이지만 최대 전송 속도가 480 Mbps인 케이블을 만나게 된다.

USB 2.0 Type C
USB 2.0 Type C 케이블도 존재한다.

Type A 컨넥터는 상황이 좀 재밌다. Type A 컨넥터도 원래는 4개의 핀만을 지원하도록 설계됐다. 하지만 Type B와는 다르게 Type A 컨넥터는 너무 많이 사용됐다. 따라서 USB 3.x를 위해 새로운 모양의 컨넥터를 만들게 되면, 사용자는 하나의 폰을 충전하기 위해 2개의 케이블을 들고 다녀야 하고, 컴퓨터에는 레거시 Type A 포트와 3.x를 위한 Type A 포트를 따로 만들어줘야 한다. 이는 사용자의 불편함과 비용 증가로 이어진다. 이는 USB 3.x의 보급을 늦춰 최악의 경우는 USB 3.x의 성공 여부를 가를 수 있는 중요한 요소였다.

USB Type A
USB 2.0 Type A 플러그와 USB 3.x Type A 플러그

이런 불편함과 비용을 막기 위해 USB-IF는 기존 포트와 호환되는 Type A 포트를 새로 만들었다. 위 사진에서 왼쪽 흰 컨넥터가 기존에 사용하던 Type A 플러그고 오른쪽 파란색이 USB 3.x에서 새로 도입 된 Type A 플러그다. 기존의 깔끔한 4개의 선과 달리 그 아래 5개의 휘어진 핀이 있는 것을 볼 수 있다. 이 5개의 핀이 새로 추가된 SSRx+, SSRx-, SSTx+, SSTx-, GND_DRAIN과 연결된 핀이다.

USB 3.x Type A
USB 3.x Type A의 플러그와 수용단자

수용단자에도 마찬가지로 5개의 핀이 추가됐는데 이 핀은 기존 Type A 플러그는 닿지 않는 높이에 있다. 따라서 플러그나 수용단자 어느 한 쪽이 레거시 컨넥터라면 4개의 핀만 사용하는 USB 2.0 표준에 따라 동작하고, 양쪽 다 USB 3.x 플러그와 수용단자를 사용하는 경우에만 USB 3.x 스펙에 맞게 동작을 할 수 있다.

다시 말해, Type B처럼 물리적으로 다른 커넥터를 도입한 경우에는 명확히 구분이 가능했지만, Type A나 Type C처럼 레거시와 호환성을 유지한 설계에서는 겉보기로 구분하기 어려운 점도 있다. 이러한 설계는 기술 발전과 사용자 편의성 사이의 균형을 고민한 결과라고 할 수 있다. 하지만 이 사용자 편의성은 일정정도 명확성을 포기하고 얻어진 것이다. 이 포기한 명확성은 USB 3.x 케이블 전체에 퍼져있어 USB 케이블을 아무 생각 없이 사용하기는 쉬우나 제대로 사용하기 어렵게 만들었다. 다음 글에서는 이를 이해하는 방법에 대해 정리해보도록 하겠다.

댓글

이 블로그의 인기 게시물

USB 2.0 케이블의 내부 구조

[C++] enum class - 안전하고 쓰기 쉬운 enum

Log Aggregator 비교 - Scribe, Flume, Fluentd, logstash

[Web] SpeechSynthesis - TTS API

터미널 출력 제어를 위한 termios 구조체 이해하기