본문 바로가기

취미

기계식 키보드 USB-C 탈착식 개조 - 2

https://orchards.tistory.com/4

 

기계식 키보드 USB-C 탈착식 개조 - 1

꽤 오래 써 온 기계식 키보드가 있습니다. 최근에 스위치가 고장나서 분해해서 납뗌과 납땜을 했습니다.그러고 나니 USB-C, 그리고 탈착식으로 개조가 하고 싶어졌습니다.  5핀 커넥터 찾기 키

orchards.tistory.com

 

이제 USB Type-C 단자를 공부해야 합니다. Type-C 공식 스펙 문서를 탐독합니다.

https://www.usb.org/sites/default/files/USB%20Type-C%20Spec%20R2.0%20-%20August%202019.pdf

 

문서가 정말 길고 복잡합니다.

내용이 알차긴 합니다. USB Type-C가 들어간 제품을 만드려는 사람들이 다양하게 있을 거잖아요? 단자를 만드려는 사람, 케이블을 만드려는 사람, 장치를 만드려는 사람. 이 사람들에게 필요한 모든 정보가 다 있습니다. 잘 찾아보면 어딘가에 잘 숨겨져 있어요.

 

USB-C는 위 아래에 각각 12개씩 총 24개의 핀으로 구성되어 있습니다.

단자의 모양이 '플러그(plug)'와 '리셉터클(receptacle)' 두 가지가 있는데요, 플러그가 리셉터클에 꽂히는 꼴입니다.

개인적으로 단자의 모양을 female/male gender로 지칭하는 걸 안 좋아하는데, 플러그와 리셉터클은 마음에 듭니다.

 

Figure 2-1 USB Type-C Receptacle Interface (Front View). p. 30.

 

일단 저는 딱 USB 2.0 Type-A 수준으로만 지원하면 됩니다. 5V와 GND, 그리고 앙방향 통신에 사용하는 D+와 D-, 이렇게 4개의 라인만 필요합니다. 다행히 이런 사례도 문서에 나와 있습니다.

3.1.1 Compliant Connectors
The USB Type-C specification defines the following standard connectors:
• USB Full-Featured Type-C receptacle
• USB 2.0 Type-C receptacle
• USB Full-Featured Type-C plug
• USB 2.0 Type-C plug
• USB Type-C Power-Only plug

 

그러면 어떤 할인을 받을 수 있나 볼까요.

3.2.1 Interface Definition
(...)
This specification requires that all contacts be present [...] except the USB 3.2 or USB4 signals (i.e., A2, A3, A10, A11, B2, B3, B10 and B11) be present in the mating interface of the USB 2.0 Type-C receptacle connector [...]

 

USB 3.x에서는 D+/D- 페어에 더해 추가적인 TX/RX 페어들을 사용하고, 그게 저 핀들인 것 같습니다. 다행히 저희는 필요가 없군요.

그럼 필요한 핀은 이렇습니다.

  • A1, A12, B1, B12 (4개): GND
  • A4, A9, B4, B9 (4개): VBUS
  • A6, B6 (2개): D+ / A7, B7 (2개): D-
  • A5 (CC1), B5 (CC2), A8 (SBU1), B8 (SBU2)

GND, VBUS, D+/D-의 의미는 USB 2.0 Type-A에서 쓰던 것과 동일할 텐데요. CC, SBU 핀의 의미를 찾아봐야 합니다.

 

4.5 Configuration Channel (CC)
4.5.1 Architectural Overview
For the USB Type-C solution, two pins on the connector, CC1 and CC2, are used to establish and manage the Source-to-Sink connection. [...]
Functionally, the configuration channel is used to serve the following purposes.
• Detect attach of USB ports, e.g. a Source to a Sink
• Resolve cable orientation and twist connections to establish USB data bus routing
• Establish data roles between two attached ports
• Discover and configure VBUS: USB Type-C Current modes or USB Power Delivery

 

일단 CC 핀은 방향 등을 컨트롤하는 데 쓰는군요. 어떻게 하는 걸까요?

 

더보기

[3.4.1 USB Full-Featured Type-C Cable Assembly]에 있는 스펙을 보면, 24개의 핀 대부분이 양방향으로 이어져 있지만, CC 핀만은 예외입니다. 한쪽의 A5와 다른 쪽의 A5를 연결하는 한 가닥만 있고, 한쪽의 B5와 다른 쪽의 B5는 서로 연결되어 있지는 않습니다.

 

Table 3-10 USB Full-Featured Type-C Standard Cable Assembly Wiring. p. 75.

 

VCONN은 뭘까요? [4.9 Electronically Marked Cables]와 [4.10 VCONN-Powered Accessories (VPAs) and VCONN-Powered USB Devices (VPDs)]에 예시가 나와 있습니다.

 

Figure 4-41 Electronically Marked Cable with VCONN connected through the cable. p. 231.

 

케이블 자체에 eMarker (그림의 SOP') 칩이 있으면, source가 VCONN의 풀다운 저항 Ra를 인식하고, CC 핀을 이용해 케이블과 소통하며, USB Power Delivery에 활용할 수 있는 것 같습니다.

 

Figure 4-43 Example Charge-Through VCONN-Power USB Device Use Case. p. 235.

 

또, 이런 것도 있다고 하네요. Charge-Through VCONN-Powered Device (CTVPD)로, VCONN의 전력을 끌어와서 다른 peripheral을 돌릴 수도 있는 것 같습니다. 이렇게까지 해야 했나 싶네요.

 

아무튼, CC핀은 정확히 한 가닥만 이어져 있고, 그래서 source와 sink 양쪽 다 '연결된' CC핀이 나의 A5인지 B5인지를 알 수 있으므로, 어느쪽으로 어떻게 mux/demux해서 통신할지를 결정할 수 있나 봅니다.

 

아무튼 CC핀은 Type-C에서 방향을 판별하는 데 쓰이는 건 알겠는데, USB 2.0을 하려면 어떻게 해야 할까요?

일단 키보드는 항상 sink이니, sink임을 호소할 방법을 찾아 봅니다.

 

Figure 4-5 Pull-Up/Pull-Down CC Model. p. 151.

 

"USB 2.0 sink device는 이렇게 하세요!"라고 나와 있는 곳은 없는데, 아무튼 Rd로 pull down을 하면 sink라는 것 같습니다. Rd는 [Table 4-25]에 나와 있는데요, 5.1 kΩ라고 합니다. power capability detect를 할 것인지에 따라 ±20%인지, ±10%인지가 갈린다는데요, 어차피 오차 범위가 저것보다 훨씬 작은 저항이 오히려 더 흔하니, 값만 알아두면 되겠습니다.

 

아무튼 항상 sink로 작동하려면 CC1, CC2 모두 Rd로 풀다운하면 되겠습니다.

 

이에 관해 재밌는 글을 봤는데요.

더보기

표준에는, sink의 state들에서 CC1과 CC2는 따로 풀다운되어야 한다고 나와 있습니다.

4.5.2.2.3.1 Unattached.SNK Requirements
[...]
Both the CC1 and CC2 pins shall be independently terminated to ground through Rd.

 

그런데 라즈베리 파이 4를 만들면서, 누군가 CC1과 CC2를 아예 쇼트한 다음에 하나의 Rd로 풀다운하자는 발상을 했나 봅니다. 보통은 CC 핀이 한쪽만 연결되어 있고, 다른 쪽은 not connected 상태라서 문제가 없는데요. 앞에서 접어둔 CC & VCONN 부분을 보면, eMarker로 마킹된 케이블은 VCONN쪽이 Ra로 풀다운됩니다.

 

CC1과 CC2를 쇼트한 경우의 회로

 

그림을 보면, CC (케이블의 위쪽 라인)은 Ra와 Rd로 병렬로 풀다운되어 있습니다.

즉 source에서 CC로 느끼는 풀다운 저항은 둘의 조화평균인 836.07 Ω에 불과합니다.

원래는 한쪽이 Rd, 한쪽이 Ra니까 [Table 4-10](p.152)에 따라 'Powered cable with Sink'로 인식되어야 하는데, 이제는 다른쪽이 Ra 미만으로 떨어졌습니다.

[Table 4-26](p. 236)을 보면, Ra는 사실 800-1.2kΩ의 넓은 허용 범위를 가지고 있고, eMarker 등이 VCONN에서 전력을 끌어 쓰는 경우도 있어 실제로는 더 낮아도 된다는 주석이 쓰여 있습니다. 즉 이 병렬 풀다운은 결과적으로 Ra라고 인식될 여지가 충분하다는 것이죠

양쪽 모두 Ra인 경우는 [Table 4-10](p.152)에 따르면 Audio Adapter Accessory Mode입니다. 이는 [Appendix A](p. 309)에 나와 있는데요. 예전에 애플의 유선 이어폰인 이어팟(EarPods)이 Lightning 커넥터를 달고 나왔던 걸 생각하면 됩니다. 이 경우 charge-through를 지원하기 위해, Audio Adapter 쪽에서 파워를 줄 수는 있으나, 반대는 안 됩니다.

즉, 충전기나 호스트 입장에서는 "나는 쟤한테 audio analog를 쏠 수가 있고, VBUS 핀으로는 나한테 파워를 주든가 말든가 할 것"인 셈인데, 라즈베리 파이는 파워를 주기는 커녕 충전받아야 하는 입장이죠.

그래서 결론적으로 "특정 (eMarker가 있는) 케이블로는 라즈베리 파이 4를 충전할 수가 없다"는 증상이 난 적이 있었고, 곧 고쳐졌다고 합니다.

 

https://www.scorpia.co.uk/2019/06/28/pi4-not-working-with-some-chargers-or-why-you-need-two-cc-resistors/

 

Pi4 not working with some chargers (or why you need two cc resistors) – The blog of Tyler Ward (aka scorpia)

The new pi has been released and it has a USB Type-C connector for power however people are finding some chargers are not working with it (notably macbook chargers). Some have speculated that this is due to a manufacturer limitation on the power supplies h

www.scorpia.co.uk

 

SBU는 또 복잡한 개념 같은데요. 그 전에 일단 [3.2.3 Pin Assignments and Descriptions]에 있는 아래 표를 보겠습니다.

 

Table 3-5 USB Type-C Receptacle Interface Pin Assignments for USB 2.0-only Support. p. 69.

 

표 아래의 주석에 유용한 정보가 가득합니다.

1. Unused contact locations shall be electrically isolated from power, ground or signaling (i.e., not connected).
2. [...] The receptacle side shall support the USB 2.0 differential pair present on Dp1/Dn1 or Dp2/Dn2. The plug orientation determines which pair is active. In one implementation, Dp1 and Dp2 may be shorted on the host/device as close to the receptacle as possible to minimize stub length; Dn1 and Dn2 may also be shorted. The maximum shorting trace length should not exceed 3.5 mm.
3. Contacts A8 and B8 (SBU1 and SBU2) shall be not connected unless required for a specified purpose (e.g., Audio Adapter Accessory Mode).

 

우선 SBU는 안 써도 된다고 하고요. 안 쓰는 핀은 not connected(= floating = hi-Z)로 두면 된다고 합니다.

 

2번의 부분은 이런 말입니다. 원래는 CC가 연결된 방향의 Dp/Dn(D+/D-)을 써야 합니다. 그런데, 어차피 한쪽을 쓸 때 다른 쪽 핀 데이터는 무시할 거란 말이죠. (Dp1과 Dp2를 mux해서 Dp로 쓴다고 하면, 1을 선택하고 있으면 muxer의 Dp2쪽 입력이 무시될 거라는 말.)

그럴 거면 그냥 Dp1과 Dp2를 쇼트해서 Dp로 가져다 쓰고, Dn1과 Dn2도 마찬가지로 Dn으로 가져다 쓸 수 있다는 말입니다. 만일 source/sink negotiation이 필요가 없다면(always host거나 always device거나), CC 연결 여부조차도 무시하고 그냥 Dp, Dn을 바로 가져다 쓸 수 있습니다. 지금 저희가 딱 그렇게 하면 될 것 같네요.

 

단, 두 가지 조건이 있습니다. 먼저 쇼트를 최대한 receptacle에 가깝게 해야 합니다. 아래 그림의 stub, 즉 open-ended 부분의 길이를 줄이기 위해서입니다. 실제로는 케이블에도 연결되어 있고, 반대편(host; source)의 muxer까지 가서 terminate되긴 할 텐데요. 그래도 가급적 시키는 대로 하면 좋겠죠.

 

 

그리고 쇼트하는 선도 가급적 짧게 해서 3.5 mm 이하로 하라네요. 이건 해 봐야 각이 나올 것 같긴 하네요.

 

아무튼 그러면 대충 모양은 나옵니다. 이제 회로를 만들어야겠습니다.

'취미' 카테고리의 다른 글

린나이 RBMC-35 문제 - 3  (0) 2024.06.13
린나이 RBMC-35 문제 - 2  (0) 2024.05.22
린나이 RBMC-35 문제 - 1  (0) 2024.05.21
기계식 키보드 USB-C 탈착식 개조 - 1  (0) 2024.05.09