최근 수정 시각 : 2024-11-02 19:44:33

USB


파일:나무위키+유도.png  
은(는) 여기로 연결됩니다.
USB라고 불리는 기억장치에 대한 내용은 USB 드라이브 문서
번 문단을
부분을
, 그 외 다른 뜻에 대한 내용은 USB(동음이의어) 문서
번 문단을
번 문단을
부분을
부분을
, 에 대한 내용은 문서
번 문단을
번 문단을
부분을
부분을
, 에 대한 내용은 문서
번 문단을
번 문단을
부분을
부분을
, 에 대한 내용은 문서
번 문단을
번 문단을
부분을
부분을
, 에 대한 내용은 문서
번 문단을
번 문단을
부분을
부분을
, 에 대한 내용은 문서
번 문단을
번 문단을
부분을
부분을
, 에 대한 내용은 문서
번 문단을
번 문단을
부분을
부분을
, 에 대한 내용은 문서
번 문단을
번 문단을
부분을
부분을
, 에 대한 내용은 문서
번 문단을
번 문단을
부분을
부분을
참고하십시오.
||<tablewidth=100%><tablebgcolor=#fff,#1c1d1f><tablebordercolor=#555><bgcolor=#555><color=#fff>개별 문서가 존재하는 외부단자
{{{#!wiki style="margin: 0 -10px -5px; min-height: calc(1.5em + 5px); word-break: keep-all"
{{{#!folding [ 펼치기 · 접기 ]
{{{#!wiki style="margin:-6px -1px -11px"
데이터 입출력 단자
디지털 비디오 단자
모바일 기기 충전 단자
}}}}}}}}}
Universal Serial Bus
범용 직렬 버스
파일:USB 아이콘_Black.svg 파일:USB 아이콘_White.svg

1. 개요2. 속도 버전3. 단자 타입 / Pinout4. USB 버스 파워
4.1. USB Battery Charging ( USB BC)4.2. USB Power Delivery( USB PD)
5. 장점6. 단점7. 문제와 해결
7.1. 동일 기기에 드라이버를 새로 잡는 경우7.2. BadUSB
8. USB Device Class
8.1. USB Audio Class (UAC)8.2. USB Human Interface Device (HID)8.3. USB MIDI8.4. USB Mass Storage Class8.5. USB MTP8.6. 그 외 클래스들
9. 기타10. USB 관련 물건

[clearfix]

1. 개요

원래는 주로 시리얼 포트나 패러럴 포트 등의 데이터 입출력 단자에 연결하여 이용하는 주변 기기들을 좀 더 쉽게 이용하기 위해 만들어진 단자이다. 앞서 언급한 포트들은 역사가 오래되어 속도도 느리고 전원 공급도 되지 않으며, 개수도 매우 한정되면서 연결선은 굵고 포트 크기도 큰 등 다양한 단점이 있었으며 초보자들에게는 설치도 어려웠다. 당시 인텔의 아제이 바트(Ajay Bhatt)의 아내가 프린터 설치에 어려움을 겪었고, 그때마다 전화로 알려주느라 고생하던 아제이 바트가 기존의 연결 방식을 대체하기 위한 포트의 개발이 시작 되었다. 첫 등장은 1994년 컴팩, DEC, IBM, 인텔, 마이크로소프트, NEC, 노텔 등 7개사로 이루어진 그룹에서 USB의 개발을 시작하였다. # 이후 인텔 최초의 USB 지원 칩셋인 430HX가 1996년 발표된 이후 실질적으로 대략 1990년대 후반~ 2000년대 초부터 본격적으로 보급이 시작되었다. 현재는 주변기기 연결 인터페이스의 사실상 독점적인 위치를 점하고 있으며, 대부분의 기기가 USB로 연결되어 데이터를 전송하거나 전원을 공급하는데 이용된다. 그야말로 명칭 그대로의 범용.
파일:external/upload.wikimedia.org/800px-Usb_connectors.jpg
Micro-B 수 비표준 8pin Mini-B 수 Type-A 암 Type-A 수 Type-B 수

다양한 규격의 USB 소켓. USB 특성상 호스트가 필요하고, 이에 따라 호스트 소켓(Type-A)과 클라이언트 소켓(Type-B)의 모양이 일단 다르다. Type-B는 PC 주변기기의 소형화에 대응하느라 다양한 표준 비표준의 소형화 규격들이 존재한다. 스마트폰이 Host 역할을 하기 시작함에 따라 Host에 따른 규격 구분이 모호해지고 있는 상황이었고 결국 Host와 Client의 차이가 없는 USB Type-C가 등장했다. 네 번째와 다섯 번째는 최초로 정해졌으며 여전히 가장 흔한 Type-A(호스트 기기쪽 접속. Standard A로도 불리움.)이고, 맨 오른쪽은 3.5인치 외장 하드디스크 프린터 등 클라이언트 쪽 기기의 접속에 쓰는 Type B(Standard B로 불림. 후술할 소규격 단자의 등장으로 인해 급속히 도태되는 중.)중 수단자이다. 세 번째는 스탠더드 B와 같되 크기를 줄인 Mini-B로 USB 허브나 2.5인치 외장 하드디스크의 연결에 주로 쓰인다. 맨 왼쪽은 미니에서 한번 더 크기(두께)를 줄인 micro-B로 스마트폰 #을 비롯한 소형 휴대기기에 쓰인다. 두 번째는 비표준이고 예전에는 디지털 카메라에 Standard B를 욱여넣을 수 없어 쓰게 되었지만, 소규격 단자 표준 등장 이후에는 거의 쓰이지 않으므로 일단 무시하자. 사진에는 없지만, iPod shuffle 등 초소형 MP3 플레이어는 3.5파이 4극 음성단자(trrs)를 USB 플러그로 활용하기도 한다.

상단의 이미지를 보면 셸 안쪽의 핀 4개가 보이는데 그중 가운데의 짧은 핀 2개가 데이터용이다. 전송 중에 뽑히는 때를 대비해 데이터 연결이 끊어질 시점까지 전원이 유지되도록 대비하도록 전원 핀이 더 긴 것. 하지만 완전히 안전하지는 않으므로 반드시 안전 제거를 완료하고 뽑도록 하자.

흔히 "삼지창"이라 불리는 USB 심벌은 중의적으로, 서로 다른 주변기기들(우측의 원, 삼각, 사각)을 모두 호스트(좌측의 큰 원)에 연결할 수 있음을 나타내기도 하고, USB의 세 구성요소인 5볼트 전력 공급, 직렬 데이터, 접지를 나타내기도 한다.

네이버캐스트에서 더 상세히 설명하고 있다.

USB는 노이즈를 줄이기 위해 차동 신호를 사용한다. USB에는 D+와 D- 단자가 있다. 두 단자를 통해 전송되는 정보는 동일하지만, D- 단자는 신호의 파형이 반전되어 있다. 노이즈는 보통 두 단자의 신호에 모두 같은 영향을 주는데 수신측에서 D- 신호를 다시 반전하여 Mix하면 노이즈는 파동의 상쇄간섭에 의해 상쇄되어 사라지고 원래 신호는 2배로 강해지게 된다. 음향기기의 XLR 연결 방식과 유사한 원리이다.

USB 3.0부터는 새로운 핀이 추가되어 속도가 더욱 빨라졌다. 다만 컴퓨터에서 이 핀을 인식하지 못해서 USB 2.0으로 인식되는 경우도 있다고 하니 주의해야 한다.

2. 속도 버전

파일:상세 내용 아이콘.svg   자세한 내용은 USB/버전 문서
번 문단을
부분을
참고하십시오.
USB 버전
{{{#!wiki style="margin:0 -10px -5px; min-height:calc(1.5em + 5px)"
{{{#!folding USB 1.0 / 2.0
{{{#!wiki style="margin:-5px -1px -11px"
<tablebgcolor=#fff,#1c1d1f>
규격명
이전 규격명
레인 수
전송속도
마케팅명
이전 마케팅명
로고
USB 1.0
USB 1.1
1 1.5Mbps Basic-Speed USB 파일:USB 1 로고.svg
12Mbps
USB 2.0 1 480Mbps Hi-Speed USB 파일:USB 2 로고.svg }}}}}}}}}
{{{#!wiki style="margin:0 -10px -5px; min-height:calc(1.5em + 5px)"
{{{#!folding USB 3.2
{{{#!wiki style="margin:-5px -1px -11px"
규격명
이전 규격명
레인 수
전송속도
마케팅명
이전 마케팅명
로고
USB 3.2 Gen 1x1 USB 3.0
USB 3.1 Gen1
1 5Gbps USB 5Gbps SuperSpeed USB
SuperSpeed USB 5Gbps
파일:Certified USB 5Gbps.svg
USB 3.2 Gen 1x2 2 10Gbps USB 10Gbps SuperSpeed + USB
SuperSpeed USB 10Gbps
파일:Certified USB 10Gbps.svg
USB 3.2 Gen 2x1 USB 3.1 Gen 2 1
USB 3.2 Gen 2x2 2 20Gbps USB 20Gbps SuperSpeed USB 20Gbps 파일:Certified USB 20Gbps.svg }}}}}}}}}
{{{#!wiki style="margin:0 -10px -5px; min-height:calc(1.5em + 5px)"
{{{#!folding USB4
{{{#!wiki style="margin:-5px -1px -11px"
규격명
이전 규격명
레인 수
전송속도
마케팅명
이전 마케팅명
로고
USB4 Gen 2x1 1 10Gbps USB 10Gbps 파일:Certified USB 10Gbps.svg
USB4 Gen 2x2 2 20Gbps USB 20Gbps USB4 20Gbps 파일:Certified USB 20Gbps.svg
USB4 Gen 3x1 1 20Gbps
USB4 Gen 3x2 2 40Gbps USB 40Gbps USB4 40Gbps 파일:Certified USB 40Gbps.svg
USB4 Gen 4 대칭 USB4 Version 2.0 2 80Gbps USB 80Gbps 파일:Certified USB 80Gbps.svg
USB4 Gen 4 비대칭 1 40Gbps
3 120Gbps }}}}}}}}}

3. 단자 타입 / Pinout

파일:상세 내용 아이콘.svg   자세한 내용은 USB/타입 문서
번 문단을
부분을
참고하십시오.
USB 타입의 종류 파일:USB 아이콘_White.svg
USB Type-A USB Type-B USB Type-C
파일:USB Type-A.png 파일:USB Type-B.png 파일:USB Type-C.png
파일:USB Type-B Mini.png 파일:USB Type-B Micro.png

3.1. USB Type-A

파일:상세 내용 아이콘.svg   자세한 내용은 USB Type-A 문서
번 문단을
부분을
참고하십시오.

3.2. USB Type-B

파일:상세 내용 아이콘.svg   자세한 내용은 USB Type-B 문서
번 문단을
부분을
참고하십시오.

3.3. USB Type-C

파일:상세 내용 아이콘.svg   자세한 내용은 USB Type-C 문서
번 문단을
부분을
참고하십시오.

4. USB 버스 파워

USB가 지원하는 전원 공급 규격
USB 2.0 USB 3.2 USB BC USB Type-C USB PD
[ruby(2.5W, ruby=5V 0.5A)] [ruby(4.5W, ruby=5V 0.9A)] [ruby(7.5W, ruby=5V 1.5A)] [ruby(15W, ruby=5V 3A)] [ruby(240W, ruby=48V 5A)]


USB 전원
명칭 최대 전압 최대 전류 전력
USB 2.0 5V 0.1A저출력, 0.5A고출력 0.50W, 2.5W
USB 3.x 5V 0.15A저출력, 0.9A고출력, 1.5A3.2듀얼레인 0.75W, 4.5W
USB4™ USB PD와 USB Type-C에 의해 정해짐
USB BC 1.2 5V 1.5A 7.5W
Type-C [email protected][1] 5V 1.5A 7.5W
Type-C [email protected] 5V 3A 15W
USB PD (SPR) 20V 5A 100W
USB PD (EPR) 48V 5A 240W

USB 버스 파워의 기본 전압은 5V이다. USB가 처음 세상에 나왔던 20세기에는 마더보드 내의 전압과 전류를 그대로 끌어 온 관계로 5V 전압과, 0.1A 정도의 전류를 제공하였다. 5V는 일반적인 전자 회로( TTL)에서 통용되는 최대 전압으로, 그 이상으로 넘어가면 트랜지스터 기반인 반도체 회로는 파손된다. 그래서 모터를 구동시키는 것 외에 5V 이상의 전압을 인가하는 것은 굳이 고려하지 않았었다. 한편 전류는 발열과 직결되고, 발열은 전자 부품의 수명에 영향을 끼친다. 이에 따라 mA 단위 이상의 전류는 웬만하면 흐르지 않는 것을 전제했었다. 이 정도로도 저전력 주변기기를 구동하기에 충분했고, 외장 HDD와 같이 고전력을 요구하는 장치들은 별도의 전원 케이블을 연결하여 사용하였다. 이렇듯 USB 케이블 안에는 오래도록 5V-1A 미만의 전력이 흐르고 있었다.

그러나 기술이 발전하면서 출시되기 시작한 MP3 플레이어, PDA, 휴대전화 등이 USB로 충전을 겸하기 시작한다. 데이터 케이블과 전원 케이블이 하나로 합쳐지니 거추장스럽지 않아졌고, 사람들은 이를 선호하였다. 이후 USB 포트의 출력이 올랐지만(5V 0.5A) 여기에 그치지 않고, 마이크로 Type-B USB 포트를 스마트폰의 충전단자로 통일하기로 규약하고, 이를 위한 전용충전기가 나오면서 보다 더 높은 출력(5V, 1.5A)을 지원할 수 있게 되었다. 어느 새 USB 포트는 만능 전원 포트로 여겨지게 되었고, 손풍기 같은 작은 전자기기 마저도 당연히 USB로 충전이 될 것이라 여기는 사람들도 생겼다. 그럼에도 컴퓨터의 USB 포트(최대 5V 0.5A)는 출력이 약했기에[2] 유전원 허브를 연결하기도 했다. 주변기기가 필요한 전력을 컴퓨터가 아닌 유전원 허브의 전원을 통해서 제공하는 것이다.[3]

파일:external/www.bixmart.com/cabusb-yblack.jpg
USB 단자 2개를 연결하여 두배의 전류를 공급받는 케이블도 있다. 병렬로 500mA×2=1A를 받아 외장 HDD를 동작시키거나, 태블릿 컴퓨터나 기타 모바일 디바이스의 충전용으로 많이 사용되었다. 2009년대 후반, 2010년대 초반에 "Y자 케이블"이란 이름으로 종종 볼 수 있었다. 2.5인치 외장하드에서는 두 개의 케이블을 모두 연결하는 것은 선택 사항이었지만 비교적 많은 전력을 소모하는 3.5인치 외장하드는 대부분 작동에 두 개의 케이블을 모두 요구하거나 전용 어댑터를 사용하는 경우가 많았다.

요즘도 데스크톱, 노트북은 메인보드 제품과 USB 포트에 따라선 전력 공급이 부족할 수 있고, 이를 해결하기 위해 Y 케이블로 단자 2개의 전력을 끌어오거나, 통신용 단자와 별도로 휴대폰 충전기를 연결하여 사용하는 경우도 있다. #1, #2

일부 메인보드에서는 휴대용 기기 또는 스마트폰 고속충전 유틸리티를 지원하기도 한다. 전용 애플리케이션에서 접속한 디바이스의 ID를 감지해서 전력제한을 풀어 넉넉한 전류를 흘려주는 방식으로 작동한다.[4]

이러한 삽질을 거쳐가며 2010년 즈음부터는 본격적으로 USB 포트의 출력을 정식으로 높인 제품들을 볼 수 있게 되었다. USB 3.0으로 버전을 올리면서 전력 출력을 높였고, 그 이상의 전력은 USB Battery Charging( USB BC)를 통해서 제공하였다. 물론 삽질은 계속 이어지고 원하는 급속충전 성능을 위해 USB 충전 규약은 여러 제조사의 기술에 따라 파편화되는 과정도 거쳤고, 그 이후에 USB Power Delivery( USB PD) 규격이 제정되며 현재에 이른다. 따라서 USB가 전원 공급에 한계가 있다는 위 문단의 설명은 이제 다 옛 이야기가 되었다. 현재는 게이밍 노트북과 같은 전력을 많이 소모하는 모바일 기기도 대부분의 상황에서 충분한 전력을 공급해 줄 수 있다.

다만 전력과는 별개로 USB 컨트롤러 리소스 문제가 있다. USB 3.0은 2.0에 비해 단자당 배정하는 엔드포인트가 훨씬 많다. 때문에 컨트롤러 리소스를 많이 잡아먹는 주변기기(카메라, 오디오 장치 등)를 사용할 경우 윈도가 USB 컨트롤러 리소스 초과 에러 메시지를 보여줄 수 있으며 단자에 연결된 주변기기가 제대로 작동하지 않을 수 있다. 이 경우 컴퓨터에 USB 2.0 단자가 있다면 엔드포인트가 많이 필요 없는 주변기기(예를 들어 키보드)를 2.0 단자에 연결하면 엔드포인트가 많이 필요한 주변기기에 그만큼 엔드포인트를 돌려줄 수 있으므로 문제가 해결될 수 있다. 요새도 USB 2.0 단자가 한두개쯤 달려있는 USB 허브가 만들어지고 팔리는 이유가 이것이다.

4.1. USB Battery Charging ( USB BC)

파일:상세 내용 아이콘.svg   자세한 내용은 USB BC 문서
번 문단을
부분을
참고하십시오.

4.2. USB Power Delivery( USB PD)

파일:상세 내용 아이콘.svg   자세한 내용은 USB PD 문서
번 문단을
부분을
참고하십시오.

5. 장점

꽂으면 알아서 인식하고 돌아간다는 편리한 장점 때문에 USB 포트로 선풍기며, 공기청정기며, 탁상용 가습기며, 심지어 냉장고, 전열 방석이나 기타, 색소폰 등의 악기까지 나올 정도. USB 주변기기라고 치면 많이 나온다. 이 경우는 USB의 인터페이스 측면의 우월함보다 DC 5V 전원을 편리하게 사용할 수 있다는 점이 크게 작용했다. 그래서 선풍기 등등 전원만 필요한 장치는 스마트폰 충전기에 연결해도 작동한다. 포트 규격이 안 맞아도 적절한 컨버터가 있으면 어지간해서는 연결이 된다. 웬만한 데스크탑/노트북에는 못해도 2개 이상의 포트를 갖추고 있다는 점도 범용성을 높인다. 데스크탑은 메인보드에 따라 다르지만 도합 10개 이상의 USB 포트를 세팅할 수도 있다. USB Type-C Alternate Mode가 나오고 나서는 모니터도 USB 연결을 지원한다.

또한 기기별로 단자를 구별할 필요가 없다는 점도 장점이다. 따라서 아무 구멍이나 놀고 있는 데 끼워 넣으면 그만. 예전에 컴퓨터에서 프린터 단자, 키보드 단자, 마우스 단자, 스피커 단자 등이 따로 있어서 일일이 구분해서 끼워 넣어야 했고 놀고 있는 단자에 다른 기기를 접속하는 것도 불가능했다. 그 결과 컴퓨터의 확장성에도 제약이 있었다. 그래서 요즘은 키보드 마우스, 프린터와 같은 대부분의 모든 컴퓨터 주변기기가 USB로 통일되어 가고 있는 분위기이다. 2010년대 초반부터 출시되는 일부 메인보드 모델에 따라서는 PS/2 포트가 콤보로 1개밖에 없거나 아예 없는 제품들이 허다하다. 속편하게 USB 포트로 나오는 모델 쓰라는 소리.[5] 울트라북같이 굉장히 얇아진 노트북에서는 아예 얇게 만들기 위해 ODD를 안 달고 나오기 때문에 USB 외장형 ODD를 써야 하며, 블루레이 외장 라이터는 USB가 2개다.[6] 구형 장비나 일부 공업용 장비나 전문가급 프린터 기종에 한해서만 지난날의 패러럴 포트를 사용하고 있다. USB를 최대한 활용한 예가 바로 USB 메모리.

과거에는 단점이었으나 현재는 장점이 된 부분도 있다. 컨트롤러 구성이 단출하지만, 메인 CPU의 의존율이 높다는 점이다. USB 보급 초기에는 '얘가 CPU 리소스 다 잡아먹는다, IEEE1394보다 구리다'라는 반응이 많았다. 하지만 시간이 지남에 따라 CPU의 연산력이 순식간에 하늘 끝까지 올라가 버리면서 CPU 리소스 문제는 사소한 문제가 되어 버렸다. 비슷한 케이스가 하드웨어 처리에서 소프트웨어 처리로 변화한 사운드 카드 분야. 펜티엄3 때까지는 사운드 처리에 들어가는 성능 비율이 꽤 돼서 문제가 되었지만, 멀티코어 시대가 되면서 좀 비싼 보드의 경우 온보드 사운드 칩 + CPU만으로도 일반적인 5.1 채널 서라운드 홈씨어터를 메인보드에 있는 단자로 너끈히 돌리고도 남는 수준에 이르렀다. 오히려 CPU에 의존적이다 보니 단출한 구성 및 범용성을 확보하여 모바일 디바이스는 독자 규격을 고수하는 Apple을 제외하고는 옛날 비디오 포맷 중 VHS처럼 USB로 대동단결하는 모습이다.[7]

6. 단점

근본적인 구조의 문제로 인해 USB는 그 통신에 반드시 하나의 Host를 필요로 한다. 이 때문에 속도를 까먹는다. Host가 불필요한 구조인 Firewire나 Thunderbolt의 경우 데이지 체인(앞서 연결한 장치의 뒤에 뱀꼬리처럼 줄줄이 추가 연결하는 식) 방식의 구성이 가능하다. USB도 아예 불가능하지는 않지만 전원이나 속도의 문제가 발생할 수 있다. 그러나 꼬리에 꼬리를 줄줄이 물어 쓰는 경우[8]는 많지 않으므로 단점으로 체감하는 사람은 많지 않을 듯.

과거 비대칭적인 단자 형상이 단점으로 지적되었으나, 2024년 현재는 USB Type-C 단자가 대중화되며 거의 해소되었다.

연결 길이의 제한이 있는데, 2.0은 5m, 3.0은 3m의 길이를 초과할 때부터는 정상 작동을 보장하지 않는다고 한다. 실제로 연장선을 이용하여 이 이상으로 길이를 늘릴 경우 스마트폰의 충전 속도가 급감하거나, 연결이 불안정해지는 등 문제가 발생한다. #

7. 문제와 해결

  • USB 버전 문제는 USB/버전 문서에 서술되어 있다.
    • USB 3.0과 무선통신(2.4GHz) 간섭문제.
    • USB 3.0 도입 초반, 제조사의 대처 문제.
    • USB 3.x 네이밍 혼란 문제.
  • USB-C 단자 문제는 USB Type-C 문서에 서술되어 있다.
    • Type-C 케이블 종류 구분 문제 : USB 최대속도와 최대전력의 지원여부에 따른 다양한 케이블 종류를 구별하는 방법은 항목에 서술되어 있다.
    • USB Type C-to-A 고속충전 케이블 풀업저항(10㏀, 56㏀) 문제 : 잘못된 저항을 삽입한 레거시 케이블이 컴퓨터 마더보드를 망가뜨릴 수 있는 위협에 대해서는 항목에 서술되어 있다.
    • USB Type-C 단자 충전 먹통 문제 : 레거시 단자(Type A to C)에 의존하는 구형기기, USB OTG 젠더를 오용하는 상황 등에서 충전을 거부하는 현상. 단자 형상으로 Host-Guest(정확히는 Source-Sink) 구별을 못하는 이유에서 Type-C 항목에 서술되어 있다.
  • USB 바이러스 전파 문제는 USB 메모리 문서에 서술되어 있다.
  • 하드웨어 안전제거 문제는 외장 HDD 문서에 서술되어 있다.

7.1. 동일 기기에 드라이버를 새로 잡는 경우

가끔 윈도우가 꼬이는 등의 문제로 동일한 기기를[9] 같은[10] USB 포트에 장착해도 새로운 장치로 인식하여 장치 관리자 숨겨진 장치를 표시하면 이전 장치가 남게 되는 문제가 생길 수 있다.[11]

이유는 다양한 원인으로 동일 기기를 다르게 인식하게 되는 것인데, 먼저 해당 장치에 대해 최신 드라이버 혹은 다른 버전의 드라이버를 설치해보고 그래도 문제가 발생한다면, 레지스트리에 이진값을 추가하여 임시로 방지할 수 있다. 다만 정상적인 경우에는 완전히 동일한 기기를 동일한 포트에 장착할 때에 드라이버 버전 등의 변동이 없다면 새로 잡는 게 아니고 기존에 설치된 드라이버를 사용하므로, 이 문제가 발생한다면 윈도우나 기기 둘 중에 하나는 문제가 있는 것이다. 대개 윈도우가 꼬인 게 원인이 되긴 한다.

이하 내용은 마이크로소프트 공식 문서를 참고하였다.

장치 관리자에서 먼저 문제가 발생하는 공급업체 식별 번호(VID)와 제품 식별 번호(PID)를 알아내야 한다. 이때 문제가 되는 기기를 한 번 클릭하고 상단 메뉴 보기 → 연결별 디바이스를 클릭해서 보면 좀 더 계층적으로 잘 볼 수 있다. 장치 속성에서 자세히 → 장치 인스턴스 경로를 보면 ~\\VID_XXXX&PID_YYYY&~ 라고 되어있을 것이다. 이때 VID_와 PID_ 바로 뒤의 임의의 4자리 16진수 값을 각각 기억해둔다.
HKEY_LOCAL_MACHINE\\SYSTEM\\ControlSet001\\Control\\usbflags
그리고 레지스트리 편집기에서 위 경로로 가서 우클릭 후 IgnoreHWSerNumXXXXYYYY 이름의[12] 이진값을 생성하고[13] 그 값을 01로 설정해준다. 그 다음 재부팅을 해주면 문제를 일으키던 USB 장치가 매번 새로 잡지 않게[14] 되는 것을 확인할 수 있다.

주의할 점은 이렇게 하면 완전 동일한 기기를 다른 포트에 장착하거나[15] 동종의 다른 기기를 같은 또는 다른 포트에 장착하여[16] 별도로 드라이버를 잡아야하는 정상적인 상황에서도 동일하게 잡아서 문제가 생길 수 있기 때문에 반드시 문제가 생길 때에만 이 방법을 써야 한다. 상술했듯이 이것은 임시적인 해결 방법이다.

7.2. BadUSB

BadUSB라고 하는 USB의 취약점이 2014년 7월 발표되었다. 본래 발표시에는 파장이 너무 클것 같아서 소스는 공개하지 않고 이런 공격이 가능하다는 것만 보였는데, 소스공개를 하지 않으면 제작사들의 반응이 뜨뜻미지근하게 돌아갈것을 우려하여 9월에 다른 단체에서 이 공격을 분석하여 소스까지 공개했다. 이 취약점을 이용하면 감지하는것도 거의 불가능하고 새로운 표준이 발표되어 취약점을 막는다고 해도 아예 하드웨어를 갈지 않는 한 패치도 불가능하다고 한다.

원리는 USB 기기의 펌웨어를 조작하여 본래의 기능과는 다른 장치로 일시적으로 인식시켜서 사용자가 의도하지 않은 명령을 실행하도록 신호를 보내는 것이다.[17] 가장 흔한 예로는 연결된 USB 기기를 마우스 키보드 같은 인간 인터페이스 장치로 인식시키고, 컴퓨터를 원격조작하는 것이 있다.[18][19]

이것이 가능한 이유는 호스트는 연결된 장치를 무조건 신뢰하기 때문이다.[20] 예시의 키보드나 마우스의 경우도 매우 위험하지만, 더 위험한 역할을 할 수도 있다. DHCP 중간자 공격과 결합하면 https의 secure 플래그가 없는 모든 쿠키를 빼돌린다거나 하는 짓도 가능하다. 실행파일을 실행시키는 게 아니라 USB 연결방식 자체의 취약점을 이용하는 것이므로 이론상 USB 메모리가 아닌 키보드, 마우스, 웹캠 등 USB로 연결되는것이라면 뭐든 공격경로가 될 수 있고, 만약 장치에서 장치로 옮겨다니는 형태의 바이러스까지 나온다면 답이 없게 된다. 이렇게 감염된 장치는 (일단 감염되었다는 사실을 알아내기도 거의 불가능하지만 설령 알아냈다고 하더라도) 포맷 등의 간단한 방법으로 되돌릴 수 있는 것이 아니다. 더욱이 사실상 USB는 현재 세계에서 가장 많이 사용되는 연결방식이라 할 수 있으므로 발표 직후부터 큰 논란이 된 상태. 하트블리드와 비슷하다고 생각하면 된다.

단, BadUSB는 USB의 펌웨어 영역을 해킹해야 하는데 여기는 무거운 프로그램을 돌리기에 적합한 환경도 아닌 데다 바이러스를 간단하게 만들어서는 기기마다 해킹 펌웨어가 동일하게 동작한다는 보장이 없기 때문에 이걸 활용한 악성코드를 제작하기는 필요 이상으로 어렵고, 정 바이러스가 퍼지는 상황이 오면 USB 기기 연결 절차가 강화되거나, 기업의 경우 USB 차단 기능이 있는 보안 유틸리티를 설치하는 등 대비책을 마련하는 식으로 해결책이 마련 될 것이므로 크게 신경쓸 필요는 없다고 보기도 한다. 다만, 여기서도 스턱스넷처럼 정보기관 스케일로 한정적인 상황에서 특별한 목표를 위해 정밀하게 제작된 "미션 임파서블"식 바이러스로서의 위험은 있을 수 있다고 보았다. #(영문)

결국 2019년 까지도 이럴다할 차세대 표준이 나오지 않은 채 보안프로그램이 USB포트를 감시하다가 화이트리스트 방식으로 연결하는 정도만이 방어법으로 제시되고 있다. 반면 멀쩡한 USB 펌웨어를 덮어쓰는 뻘짓을 하는 대신에 제조사가 친히 해킹툴이 포함된 펌웨어를 구워서 탑재한 채로 판매하는 모델이 떠오르는 중이다. 2019년쯤 되니 wifi를 이용해 원격으로 명령을 받아 호스트를 조종하는 USB케이블 같은 게 양산에 들어가는 수준이다. 입력장치 방식은 인터넷에서 USB포트가 달린 아두이노를 사다가 오픈소스로 풀린 공격툴을 깔면 5달러짜리 badUSB 완성이다.

Apple의 경우는 FBI가 USB 단자를 통한 해킹으로 iPhone의 PIN을 해제하자 iOS 및 iPad OS에 1시간 이상 화면이 잠겨 있으면 USB 주변기기 연결을 차단하는 기능을 추가하였다.

8. USB Device Class

USB에는 전송 프로토콜이나 단자만 표준화 된 것이 아니라 각 장치들의 표준 구현을 정의하여 꼽기만 하면 바로 동작할 수 있도록 클래스 드라이버라는 표준화된 인터페이스 또한 구현되어 있으며 이 규격을 지원하는 장치들은 연결만 하면 별도의 드라이버 설치 필요 없이 바로 동작한다. USB 허브, USB 메모리, USB 웹캠, 무선랜 등 꼽으면 바로 동작하는 장치들이 이 표준에 맞춰 제작된 경우이다.
||<tablealign=center><tablebgcolor=#fefefe,#1c1d1f><tablebordercolor=#555><rowbgcolor=#555><rowcolor=#fff> Class || 사용 || 설명 ||
00h Device Use class information in the Interface Descriptors
01h Interface Audio
02h 둘 다 Communications and CDC Control
03h Interface HID (Human Interface Device)
05h Interface Physical
06h Interface Image
07h Interface Printer
08h Interface Mass Storage
09h Device Hub
0Ah Interface CDC-Data
0Bh Interface Smart Card
0Dh Interface Content Security
0Eh Interface Video
0Fh Interface Personal Healthcare
10h Interface Audio/Video Devices
11h Device Billboard Device Class
12h Interface USB Type-C Bridge Class
13h Interface USB Bulk Display Protocol Device Class
3Ch Interface I3C Device Class
DCh 둘 다 Diagnostic Device
E0h Interface Wireless Controller
EFh 둘 다 Miscellaneous
FEh Interface Application Specific
FFh 둘 다 Vendor Specific

8.1. USB Audio Class (UAC)

오디오 쪽에서 USB 오디오 1.1이니 2.0이니 하는게 있는데 일반적인 버전과 별개로 USB Audio Class를 말하는 것이다. 이건 Class 1~3밖에 없다. 이걸 구분 못하는 오디오쟁이들 때문에 별의 별 낭설이 많은데, 일단 USB 오디오 1.1이란 건 없다. 저런 소리 하는 것 자체가 USB 버전과 오디오 클래스를 구별 못 한다는 증거. 있다고 생각하면 여기서 공식 문서를 찾아보자. 일단 최신 스펙은 2023년 7월 발표된 USB Audio 4.0.

USB 오디오 클래스에 대해 간략히 정리한 글(영문)/ 한글이 있다. 이 문서도 끝으로 갈 수록 오디오 장사속이 뻔히 보이는 점은 좀 그렇지만, USB Audio Class 2.0의 특성에 대한 설명을 올바르게 하고 있고 레어메탈질 같은 케이블 돈지랄보다는 차폐를 위한 쉴드와 페라이트 코어 등 공학적 해결을 중시한다는 점에서 볼만한 편이다.

이 표준을 준수하는 DAC들은 대체로 OS 차원에서 드라이버를 제공하고 있기 때문에 연결만 하면 바로 사용이 가능하다.
보통 별도의 드라이버 설치가 필요하지 않은 오디오 인터페이스들은 USB Audio 2.0을 지원하고 있으며 이 규격을 지원하면 ASIO없이도 OS내장 드라이버만 가지고 매우 낮은 레이턴시의 달성이 가능하다.

Windows의 경우 윈도우 98SE 부터 USB Audio 1.0 드라이버를 제공했으나 USB Audio 2.0의 기본내장은 macOS Linux에 비해 매우 늦은 편이었는데 USB Audio 2.0규격은 2009년 발표되었지만 Windows의 경우 Windows 10 1703에 와서야 윈도우 기본 드라이버에 내장되기 시작했다.

다만 이는 어디까지나 드라이버 내장이 늦었다는거지 상단 링크된 USB Audio 설명 글 같이 USB Audio 2.0을 사용 못해서 macOS에 비해 떨어지는건 아니다. 구형 윈도우들도 그냥 제조사에서 제공한 드라이버를 깔아주면 USB Audio 2.0 사용이 가능했다. 하지만 이 때문에 맥의 경우 오디오 인터페이스를 연결하기만 해도 바로 사용이 가능했는데 구형 Windows의 경우 별도의 드라이버를 항상 설치해서 사용하여야 했다. 그래서 뮤지션들이 별도의 컴퓨터 지식이 없어도 되었기 때문에 편의성 면에선 맥OS가 더 좋았고 제조사마다 다른 드라이버를 사용한다는 점에서 표준화 문제도 자유로웠기 때문에 맥OS가 선호되었다.

8.2. USB Human Interface Device (HID)

최신 버전은 2001년 발표된 HID 1.11.

이름에서 알 수 있듯이 인간 인터페이스 장치 인터페이스가 정의된 표준이며 게임 컨트롤러, 키보드, 마우스 가 이곳에 정의되어 있다.

키보드의 무한 동시입력이 규격상 6개 키로 제한되어 있다는 인식이 퍼져 있는데 반은 맞고 반은 틀린 내용이다.
USB HID 규격 자체에 키 입력갯수에 대한이 규정되어 있는 것은 아니지만, 어느 장비에서나 호환하여 사용할 수 있는 '기본 표준' 프로토콜이 6키 공간에 맞추어 만들어져 있기 때문이다. 쉬운 예시로, OS가 부팅되고 USB 드라이버가 로드된 상태라면 어떠한 HID 프로토콜을 사용하든 그것에 맞게 키보드로서 인식시킬 수 있지만, 그 이전 단계인 BIOS 등의 단계에서는 미리 정해져 있는 표준 규격 몇 종류와 일치하는 것만 제대로 동작이 가능하다. 이 중에서 키보드에 해당하는 것이 기능키 6개 플래그+키 누름 6바이트의 공간을 할당하도록 만들어져 있기 때문에 UEFI나 BIOS에서는 이 '부트 모드' 를 지원하는 키보드만이 동작 가능하다.

OS로 진입한 다음에는 USB 장치와의 통신을 드라이버가 담당하기 때문에, 원하는 만큼 통신 패킷의 크기를 확장시켜서 더 많은 키의 누름 정보를 한번에 전송하고 '이것은 키보드다' 라고 드라이버에게 알려주는 것이 가능해진다. 다만 장치 신호를 직접 후킹해서 다루지만 막상 이 HID 드라이버 구현을 엉망으로 해 놓는 한국산 보안 프로그램에서는 이 확장된 HID 모드가 정상적으로 동작하지 않는 경우가 있다.

확장 HID Report 환경에서는 패킷 필드의 길이값을 변경하여 한번에 입력하는 키의 수가 결정되는데 이 값을 무작정 키우면 그에 따라 패킷의 크기가 같이 늘어나므로 전송 부하가 너무 커져 오히려 역효과가 생기기 때문에, 보통 10개 정도만 동시 입력으로 두는 편이다.
기술이 상향 평준화되면서 대부분의 키보드 제조사들은 BIOS에서는 자동으로 부트 모드로 통신하고, 시스템에서 확장 HID Report를 인식할 수 있다는 상황이 감지되면(운영체제 부팅 후) 확장 모드로 자동으로 바뀌는 기술을 대부분 키보드에 탑재하고 있다. DIY 키보드 쪽에서도 사람들에게 많이 쓰이면서 상당부분 '갖다쓰면 되는 수준' 으로 기성제품화 된 오픈소스 펌웨어들의 경우 이러한 두 개의 모드를 잘 지원하는 편이다.
QMK의 Report 프로토콜 구현
ZMK의 HID 구현

8.3. USB MIDI

모든 MIDI 장치들을 위한 표준. 마스터 키보드나 미디 페이더 등과 같은 미디 신호를 지원한다.
최신 표준은 2020년 발표된 USB MIDI 2.0. MIDI 2.0을 지원하며 최대 256 채널을 지원한다.

8.4. USB Mass Storage Class

USB 메모리, 외장 하드등의 저장장치를 위한 표준.
최신 표준은 1.4

전송 방식중 거의 사용되지 않는 CBI (USB 플로피 드라이브)와 대부분의 장치가 사용하는 Bulk-Only-Transfer(또는 BBB), 그리고 외장 SSD와 같이 고속 저장 장치가 사용하는 UASP가 있다.

이 표준에서는 단순 저장 장치로써의 기능 뿐만 아니라 USB 저장장치로 부터의 부팅 표준도 정의되어 있다.

8.5. USB MTP

Media Transfer Protocol

최신 버전은 1.1

스마트폰이나 디지털 카메라에서 파일 전송시 사용하는 표준.
Mass Storage Class가 디스크에 직접 접근해 운영체제가 파일 시스템의 관리를 맡는것에 비해 추상화 레이어를 통해 전송 호스트가 모든것을 관리해서 운영체제와 관계 없이 파일 접근이 가능하며 호스트가 전송을 관리한다는 특성상 전송 후 Flush (일명 "안전 제거")가 필요하지 않다.

8.6. 그 외 클래스들

  • I3C Device Class
  • Billboard Device Class - USB Type-C Alternate Mode 지원에 사용되는 표준.
  • PID
  • Battery Charging - USB PD이전에 사용되던 DCP/CDP등의 충전 관련 프로토콜.
  • USB Type-C Bridge Class - USB 호스트가 PD를 지원하는 USB 허브나 Alternate Mode 어댑터에 연결된 PD 제품과 통신할 때 사용하는 표준.
  • Mobile Broadband Interface - LTE 모뎀등의 네트워크 장치를 위한 표준.
  • IPP - 네트워크 프린터에서 사용되는 프로토콜인 IPP를 USB를 통해 전송하는 표준. 유선 프린터들 중 독자 프로토콜을 사용하지 않고 IPP를 사용하여 지원할 때 사용된다.
  • Video - USB 웹캠이 사용하는 표준
  • Content Security
  • Personal Healthcare
  • Communication - USB 모뎀, 무선랜, 유선랜이 사용하는 표준
  • Smart Card (CCID/ICCD) - 스마트카드
  • IrDA - 적외선 통신
  • Printer - IPP와 달리 직접 통신에 사용되는 클래스
  • Monitor - 모니터 통신을 위한 드라이버

9. 기타

  • 직렬 포트이기 때문에, 이론적으로 한 PC에서 127개까지 인식할 수 있다고 한다.
  • 프로그래밍적으로는 컨트롤이 시리얼 포트보다 비교적 복잡하다. 시리얼 포트가 아직도 살아남은 이유가 이 때문이다. 아두이노 같은 것을 공부하면 뭔 말인지 대강은 안다. USB에 시리얼 포트를 변환이나 파일 포맷으로 치면 컨테이너만 바꾸는 식으로 패킹해서 쓴다고 보면 된다. 물론 모두 똑같은 건 아니고 키보드 같은 경우가 돋보이는데 한/영 한자나 기타 특수키는 스캔코드값과 별개로 인터페이스별로 코드가 다르다. 컨트롤러가 요즘 키보드 매니아들에 의해 커펌 가능한 시스템까지 나오는데 이것이 어렵다.
  • 빌 게이츠의 굴욕은 USB 스캐너를 설치하려다가 벌어진 일이다.
  • USB라 쓰고 Uh Ssibal Bandaene로 읽는 사람들이 있다. 단자 방향을 잘못 잡으면 삽입이 불가능하여 이로 인한 불편함을 많은 사람들이 겪었기 때문이다. 심지어는 이를 관측하기 전에는 확정되지 않았다며 슈뢰딩거의 USB라 지칭하기도 하는데, 자세한 내용은 USB Type-A로.
  • 한자가 USB와 비슷하게 생겨서 종종 USB 기호로 사용되기도 한다.
  • 중국에서는 U盘(pán)이라 부른다.
  • 현대 한국 막장 드라마에 USB는 약방 감초이다. 증거가 담겨서 선인과 악인이 쟁탈전을 벌이며 내용을 질질 끈다.
  • USA 다음에 USB가 온다는 농담이 있다.
  • 대한민국 국군에서 군부대 내 컴퓨터의 USB 단자에 스마트폰 충전기를 꽂는 순간 기무사에서 검열 들어온다고 한다. 휴대폰을 충전하려는 목적이 있다고 해도 절대 컴퓨터 USB 단자에 무언가를 꽂으면 안 된다.

10. USB 관련 물건


[1] CC핀을 통해 충전기 능력을 감지(저항값)하여 1.5A, 3.0A모드를 선택한다. USB 2.0, 3.2, USB BC 1.2 하위호환 가능. [2] 사용중에 1A 이상의 전류를 빨아들이는 태블릿 컴퓨터의 충전 용도로는 한참 부족한 전력이다. 기기를 사용하는 중에는 아무리 충전중이라도 배터리 잔량이 감소하는 기행을 볼 수 있다. "왜 태블릿이 충전이 안 되는거야?"라고 해봐야 USB는 MP3 플레이어 이전 시절부터 있던 존재라(...) 기본 스펙으로는 최신 기기들의 출력을 받쳐주기 힘들다. 괜히 전용충전기 사용하라고 한 것이 아니다. [3] 원래 유전원 허브는 허브 입장에서 들어오는 포트(=전원 공급)는 하나인데 나가는 포트는 여러 개이기 때문에 여러 포트에서 동시에 전원을 끌어다 쓰면 감당하기 힘들어서 만든 것이다. 때문에 몇몇 허브는 포트당 최대 전력이 2.5W인 경우가 있으니 만약 한 포트에서 2.5W 이상의 전력을 요구한다면 아무리 유전원이라도 출력을 받쳐주지 못하니, 구매시 해당 기능을 지원하는 허브인지 잘 찾아봐야 한다. [4] 이를 오용해서 성능을 개선하기도 했다. 일부 애즈락 보드는 워낙 USB 출력이 약해서, 충전전용이 아닌 그냥 USB 통신 사용 중에 저 유틸리티를 켜면 안정성 개선이 되는 경우가 있다 카더라. 2010년 초반대의 애즈락 보드는 싼 맛에 쓰거나 장난감으로 갖고 놀기 좋다는 브랜드로 인식되던 시절의 이야기다. [5] 다만, 서버나 워크스테이션 제품들은 안정성과 신뢰성 못지않게 호환성도 중요시 되기 때문에 다른 구형 포트는 생략하더라도 PS/2 포트 만큼은 어지간하면 키보드와 마우스 둘다 꽂을 수 있도록 갖춰놓는 편이다. [6] 사실, 2010년대 중반 이후로는 데스크탑에서 조차 케이스 구조는 ODD를 장착하는 것 자체가 불가능한 모델이 상당수 출시되고 있다. [7] 사실 Apple의 30핀이나 Lightning이나 단자만 독자 규격일 뿐 데이터 통신에는 USB 프로토콜을 사용한다. [8] 외장하드1-외장하드2-외장ODD-서브모니터1-서브모니터2 이런 식. [9] 동종의 기기일 뿐만 아니라, 시리얼 넘버 등 완전히 같은 기기 한 개를 말한다. 동종의 기기여도 다른 2개의 기기라면 별도로 잡는 게 정상이다. [10] 다른 포트에 연결하면 완전히 동일한 기기여도 다르게 장치를 잡는 게 정상이다. 그러므로 이 또한 해당하지 않는다. [11] 드라이버를 업데이트하는 경우에는 이전 드라이버가 남는 경우가 비일비재한데 이는 정상이다. 이 문제는 동일 기기&동일 포트&동일 드라이버 및 버전에서 문제가 발생하는 경우에 한정된다. [12] 상술한 VID와 PID 뒤의 XXXX와 YYYY를 그대로 띄어쓰기 없이 이름에 넣으면 된다. 예를 들어 VID_ 144D&PID_1234였다면 IgnoreHWSerNum144D1234 이름으로 이진값을 만들면 된다. [13] "키" 생성이 아니다. 레지스트리에서 "키"는 폴더 개념이다. 상기 경로에 하위 키("폴더")가 많을 것이다. [14] 레지스트리 값을 추가하고 새로 잡는 그 장치로 쭉 가는 것이다. 따라서 이렇게 하고 재부팅한 후에 숨겨진 장치 표시를 하면 레지스트리 추가 전 드라이버는 남아있을 수 있다. 이 이후로는 다른 문제가 없다면 새로 장치를 잡아서 숨겨진 장치에 이전 드라이버가 남아 지저분하게 되는 현상이 발생하지 않는다. [15] 예를 들어 하나의 USB 메모리를 포트만 다르게 해서 장착하는 경우 [16] 예를 들어서 같은 USB 메모리를 두 개를 사용하는 경우 [17] 윈도우 설치용 USB메모리 등 USB메모리를 부팅 가능하게 만드는 것은 메모리에 부트로더를 심는 경우가 일반적이고, 혹은 CD 이미지를 완전히 씌워버려서 CD롬(혹은DVD롬)으로 인식하게 하는 경우 두 가지가 있다. 앞의 두 경우 모두 펌웨어를 건드리지는 않는다. iODD라는 외장 메모리와 같은 경우는 스스로 광디스크로 인식되도록 펌웨어단에서 지원하기도 한다. [18] 찾아보면 아두이노 같은 장비를 사용하여 사용자 몰래 원격으로 컴퓨터를 조작하는 예제가 많이 있다. [19] 유튜브를 찾아보면 이걸로 무차별 대입법을 시도하여 스마트폰의 PIN을 깨 버리는 것도 있다. [20] 당장 새로운 USB 기기를 연결해 보면 자동으로 드라이버가 설치되고 인식되는 과정이 시작되지, 이 기기를 신뢰하는지에 대해 물어보거나 장치의 펌웨어 서명을 확인하는 등의 절차는 없다.

분류