티스토리 툴바

교통비 결제, 편의점 결제, 이제는 PC방 요금에 통화까지 가능한 '통합 결제 수단'으로서 널리 퍼지고 있는 교통카드.
그러나, 본인의 열쇠고리는 이미 USB가 대부분을 차지하여 'USB고리'가 되었던 터라
굳이 또 들고다닐 필요가 있나? 하는 생각이 강하게 스친다.

자주 들고다니는 장치에 장착시킨다면 잊어버릴 염려도 없으며, 부피도 줄일 수 있다.

그러면 이번에는 USB에 장착해보자.

시험에 쓰인 교통카드는 편의점에서 볼 수 있는 '사진을 넣을 수 있는 고리형'의 카드이며
USB 장치는 ZyRUS SecuDrive를 사용하였다.

예상 제작 시간 : 본인은 3분도 안걸렸음. 장치 분해 속도에 따라 다름.

Step 1 : 교통카드 회로 분리하기
우선 교통카드의 옆쪽 작은 홈에 뭔가를 쑤셔넣어서 플라스틱 판을 분리시키고 사진을 뺀다.


그 뒤, 작은 드라이버 등으로 검정색 스티커 옆쪽에서 옆으로 능력껏 누르면 스티커가 떼어진다.


이것을 살살 뜯어내면 (세개 하면 보드가 부서진다.)


요렇게 얇은 보드가 나온다. 이것이 교통카드의 전부이다.
데이터를 저장하는 것으로 보이는 칩이 납땜되어 있고, 전자기 유도를 위한 원형 유도 코일이 있다.

Step 2 : USB에 달아보기
위에서 분리한 보드를 타 장치에 장착해보자.
이때 이식이 될 장치는 그리 두껍지 않은 케이스를 가지고 있어야 하며 (그런다면 전파 수신이 잘 안될 것이다.)
보드가 들어가도 멀쩡한 구조를 가지고 있어야 한다. (즉 공간이 잇어야 한다는 뜻이다.)

타겟이 될 USB를 분해해보자.


전자제품에 장착하는 경우, 기존 회로 간 문제가 생길 수 잇으므로 (납땜 부분 간 접촉 등으로 인한 오동작 등..)
이렇게 절연 처리는 해주자. (접촉 부분 간 완충 역할과 절연 역할이 동시에 가능하다.)


본인은 UFD와 슬라이드 부분 사이의 작은 높이 차를 이용해 보드를 장착할 것이다.
이 부분은 알아서 강구해야 한다.


대략 이런 모습이 된다.



Step 3 : 몇가지 정보만 써두자

카드 번호, 유효기간, 카드 타입 정도는 장치 뒤에 잘 써두자.
이정도는 원래 카드에 써있는거고, 나중에 쓸일이 생길 수도 있다.



Step 4 : 완성!

이제 교통카드가 탑재된 USB가 완성이 되었다.


실제 작동 테스트는 내일 학교 갔다오면서 해야겠다.
만약 성공한다면, 아이팟 뒤에 장착하여 가지고 다니는 것도 좋을 듯.
저작자 표시 비영리 동일 조건 변경 허락

크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by toolz

Trackback Address :: http://toolz.pe.kr/trackback/295 관련글 쓰기

댓글을 달아 주세요

  1. Favicon of http://dobioi.tistory.com BlogIcon dobioi 2010/12/20 08:52 Address Modify/Delete Reply

    왜그랬니???

    편하긴 하겠다.
    하지만 분실 위험도 있겠다.

    난 신용카드로 후불교통카드 쓰고 있는데,
    어떻게 안되겠니? (ㅋㅋㅋ)

외국 포럼에서 본 글을 번역/정리하면서 다시 작성한 글입니다.

이 작업이 왜 필요한가?
일반적인 XP 시디로는 USB 장치에 설치가 불가능하다.
BIOS에서는 해당 장치를 인식하지만, 설치 시스템이 인식하지 못하는 구조랄까.

어떻게 해야 하는가?
USB관련 드라이버들을 Boot Bus Extender로 설정하게 조작을 해주면 된다.
즉, XP CD를 수정하면 된다.

방법을 알려달라!
한국어 XP CD에 맞추어 작성되었다.
우선 이 작업을 하기위해 필요한 준비물들은 다음과 같다.
* WIndows XP CD 혹은 CD 이미지 (수정, 정품 상관없음)
* Microsoft CAB SDK http://download.microsoft.com/download/platformsdk/cab/2.0/w98nt42kmexp/en-us/Cabsdk.exe
* CD이미지를 구울 장치. CD영역도 된다.
* USB 장치. 그래도 하드디스크를 추천한다.
* UltraISO 같은 ISO 편집기.

1. XP를 설치할 USB장치를 포맷하는 것을 추천한다. 가급적 NTFS로.
2. XP CD를 가지고 있다면 이미지로 만들어놓는다. 나중에 CD로 구울라면, iso로 작업하는 것이 좋기 때문.
3. CD이미지에서 다음 파일들을 추출한다. (Root\I386)

DOSNET.INF
TXTSETUP.SIF
USB.IN_
USBPORT.IN_
USBSTOR.IN_

4. Cabsdk를 이용하여 IN_ 파일의 압축을 푼다. cabarc x USB.IN_ 와 같은 방법으로 USB.IN_의 압축을 풀 수 있으며,
압축을 푼 결과는 cabarc.exe 파일이 위치한 디렉토리에 위치하게 된다. 즉 Cabsdk를 C:\cab 에 풀었다면
cabarc.exe는 C:\cab\cabarc.exe에 있는 것이며, USB.INF는 C:\cab\에 있는 것이다.

5. 그러면 USB.INF, USBPORT.INF, USBSTOR.INF 파일이 생긴다. IN_ 파일들은 전부 지우자.
6. TXTSETUP.SIF를 연다. 여기부터 말하는 ... 를 찾아서는 전부 맨 위부터 검색해서 첫번째 나오는 것을 뜻한다. 즉 맨 위부터 Ctrl+F 를 해야 함.
[InputDevicesSupport.Load] 를 찾아서
usbehci = usbehci.sys
usbohci = usbohci.sys
usbuhci = usbuhci.sys
usbhub = usbhub.sys
usbstor = usbstor.sys
를 지우고

다시 [BootBusExtenders.Load] 를 찾아서

usbehci = usbehci.sys
usbohci = usbohci.sys
usbuhci = usbuhci.sys
usbhub = usbhub.sys
usbstor = usbstor.sys
를 추가해준다.

[InputDevicesSupport] 를 찾아서
usbehci  = "Enhanced Host Controller",files.usbehci,usbehci
usbohci  = "Open Host Controller",files.usbohci,usbohci
usbuhci  = "Universal Host Controller",files.usbuhci,usbuhci
usbhub   = "Generic USB Hub Driver",files.usbhub,usbhub
usbstor  = "USB Storage Class Driver",files.usbstor,usbstor
를 지우고

[BootBusExtenders] 를 찾아서
위에서 지운 내용들을 그대로 추가해준다.

[HiveInfs.Fresh] 를 찾아서
AddReg = usbboot.inf,usbservices
를 추가한다.


[SourceDisksFiles] 를 찾아서 맨 윗줄에
usbboot.inf = 1,,,,,,_x,3,,3
를 추가한다.

이제 TXTSETUP.SIF를 저장한다.

7. DOSNET.INF를 연다.
두번째 [Files] 섹션을 찾아서
d1,usbboot.inf 를 추가한다.
저장한다.

8. USB.INF를 연다.
[StandardHub.AddService] 를 찾아
StartType = 0 으로 변경
LoadOrderGroup = Boot Bus Extender 을 추가한다.

[CommonClassParent.AddService] 를 찾아
같은 방법으로 한다.

9.
USBPORT.INF를 연다.
[EHCI.AddService] 를 찾아
StartType = 0 으로 변경
LoadOrderGroup = Boot Bus Extender 을 추가한다.

[OHCI.AddService] 와
[UHCI.AddService]
[ROOTHUB.AddService]
에도 같은 방식으로 한다.

10. USBSTOR.INF를 연다.
[USBSTOR.AddService] 를 찾아

DisplayName = %USBSTOR.SvcDesc%
ServiceType = 1
StartType = 0
Tag = 3
ErrorControl = 1
ServiceBinary = %12%\USBSTOR.SYS
LoadOrderGroup = Boot Bus Extender

로 수정/추가 한다.

11. USBBOOT.INF를 생성한다.
다음 내용을 복사해서 붙여넣기 한다.

[usbservices]

HKLM,"SYSTEM\CurrentControlSet\Services\USBSTOR","DisplayName",0x00000000,"USB Mass Storage Driver"
HKLM,"SYSTEM\CurrentControlSet\Services\USBSTOR","ErrorControl",0x00010001,1
HKLM,"SYSTEM\CurrentControlSet\Services\USBSTOR","Group",0x00000000,"System Reserved"
HKLM,"SYSTEM\CurrentControlSet\Services\USBSTOR","ImagePath",0x00020000,"system32\DRIVERS\USBSTOR.SYS"
HKLM,"SYSTEM\CurrentControlSet\Services\USBSTOR","Start",0x00010001,0
HKLM,"SYSTEM\CurrentControlSet\Services\USBSTOR","Type",0x00010001,1

HKLM,"SYSTEM\CurrentControlSet\Services\usbehci","DisplayName",0x00000000,"USB 2.0 Enhanced Host Controller Miniport Driver"
HKLM,"SYSTEM\CurrentControlSet\Services\usbehci","ErrorControl",0x00010001,1
HKLM,"SYSTEM\CurrentControlSet\Services\usbehci","Group",0x00000000,"System Reserved"
HKLM,"SYSTEM\CurrentControlSet\Services\usbehci","ImagePath",0x00020000,"system32\DRIVERS\usbehci.sys"
HKLM,"SYSTEM\CurrentControlSet\Services\usbehci","Start",0x00010001,0
HKLM,"SYSTEM\CurrentControlSet\Services\usbehci","Type",0x00010001,1

HKLM,"SYSTEM\CurrentControlSet\Services\usbhub","DisplayName",0x00000000,"USB2 Enabled Hub"
HKLM,"SYSTEM\CurrentControlSet\Services\usbhub","ErrorControl",0x00010001,1
HKLM,"SYSTEM\CurrentControlSet\Services\usbhub","Group",0x00000000,"System Reserved"
HKLM,"SYSTEM\CurrentControlSet\Services\usbhub","ImagePath",0x00020000,"system32\DRIVERS\usbhub.sys"
HKLM,"SYSTEM\CurrentControlSet\Services\usbhub","Start",0x00010001,0
HKLM,"SYSTEM\CurrentControlSet\Services\usbhub","Type",0x00010001,1

HKLM,"SYSTEM\CurrentControlSet\Services\usbuhci","DisplayName",0x00000000,"Microsoft USB Universal Host Controller Miniport Driver"
HKLM,"SYSTEM\CurrentControlSet\Services\usbuhci","ErrorControl",0x00010001,1
HKLM,"SYSTEM\CurrentControlSet\Services\usbuhci","Group",0x00000000,"System Reserved"
HKLM,"SYSTEM\CurrentControlSet\Services\usbuhci","ImagePath",0x00020000,"system32\DRIVERS\usbuhci.sys"
HKLM,"SYSTEM\CurrentControlSet\Services\usbuhci","Start",0x00010001,0
HKLM,"SYSTEM\CurrentControlSet\Services\usbuhci","Type",0x00010001,1

HKLM,"SYSTEM\CurrentControlSet\Services\usbohci","DisplayName",0x00000000,"Microsoft USB Open Host Controller Miniport Driver"
HKLM,"SYSTEM\CurrentControlSet\Services\usbohci","ErrorControl",0x00010001,1
HKLM,"SYSTEM\CurrentControlSet\Services\usbohci","Group",0x00000000,"System Reserved"
HKLM,"SYSTEM\CurrentControlSet\Services\usbohci","ImagePath",0x00020000,"system32\DRIVERS\usbohci.sys"
HKLM,"SYSTEM\CurrentControlSet\Services\usbohci","Start",0x00010001,0
HKLM,"SYSTEM\CurrentControlSet\Services\usbohci","Type",0x00010001,1

그리고 저장한다.

12. INF 파일을 IN_로 압축한다.
cabarc n USB.IN_ usb.inf
cabarc n USBPORT.IN_ usbport.inf
cabarc n USBSTOR.IN_ usbstor.inf
명령으로 압축할 수 있다.

그리고 INF 파일은 지워도 된다.

13. 위 과정을 다 수행하면, 다음 파일들이 완료된다.
USBBOOT.INF
DOSNET.INF
TXTSETUP.SIF
USB.IN_
USBPORT.IN_
USBSTOR.IN_
이 파일들을 원래 있던 곳에 덮어쓰기/추가 하면 된다.

14. 수정된 CD이미지를 구워서 부팅하면.. USB에도 잘 깔린다.

15. 다만, USB의 속도 한계가 있으므로, 성능 우선으로 OS를 튜닝해야 할 것이다.

저작자 표시 비영리 동일 조건 변경 허락

크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by toolz

Trackback Address :: http://toolz.pe.kr/trackback/289 관련글 쓰기

댓글을 달아 주세요

  1. 나그네 2011/01/03 18:32 Address Modify/Delete Reply

    감사드립니다. 평소에 USB로 xp설치 글만 보다가, USB에 설치하는 것을 생각하곤 했는데 한번 시도해 보겠습니다.



텍스트 버전 열기..

크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by toolz

Trackback Address :: http://toolz.pe.kr/trackback/267 관련글 쓰기

댓글을 달아 주세요

왜 보안인가?
요즘 USB 메모리 (이하 UFD)가 대중화되면서, 많은 사람들이 USB 메모리의 기능을 고려하기 시작했다.
많은 사람들이 고려하는 측면은 바로, '보안' 이다.
이른바 '보안 디스크' 기능으로서, 본인의 데이터를 암호화할 수 있는 부분에서 많은 사람들의 선택을 받는다.
이외에는 다소 전문적인 요소들로서 전반적인 선택의 측면으로 봐서는 '보안'보다는 결정적이지 못한다.

물론 USB 메모리가 '보안'만 지원할 수 있는 것은 아니다. '오토런' 이나 'DOS 부팅', '파티셔닝', 'PnP', 심지어 '포맷'까지 강조한다.

'보안' 기능을 지원하는 UFD는 특별한 것인가?
과연 '보안' 기능을 지원하는 UFD는 특별한 것인가? 제품의 특장점이라 함은, 다른 제품에 없는 기능이거나 그보다 뛰어난 점을 말한다. 시중에 팔리고 있는 몇몇 제품들을 보자.


PnP, 패스워드, 오토런, 파티셔닝, 부팅 기능을 제품 특징으로 강조하였다. (정확히는 부가기능 강조 목적이다.)


보안 파티션, PC Lock, 파티셔닝, 부팅, 암호화, 동기화 기능을 제품 장점으로 표기하였다.


USB 2.0 인터페이스, PnP, 추가 전원 불필요, 패스워드, USB 2.0/1.1 동시지원, USB 부팅, ReadyBoost 를 제품 장점/기능으로 설명하였다.

여기서 언급된 특징들을 주목해야 한다. 과연 이러한 항목들이 제품의 특장점 내지는 우월성을 강조하기 위한 항목으로 사용될 수 있는지 확인해볼 필요가 있다.

뻔한 내용들을 다 지우자.
USB 메모리는 USB 인터페이스를 사용한다. 2000년 4월 이후에 나오는 제품들은 전부 USB 2.0 인터페이스다. (2000년 4월에 인터페이스가 발표되었지만, 상용화 속도를 고려하면 2002~2003년에는 대부분의 하드웨어가 지원하지 않았을까 추정해본다.)
지원 속도는 최대 480Mbps이다. 환산하면 60MB/s. 또한 핫플러깅을 지원한다. 핫플러깅이란 PC가 작동중인 상태에서 장치를 삽입/제거할 수 있는 기술을 말한다. USB 장치는 대부분 전류를 많이 먹지 않으므로 (특히 USB 메모리) USB 2.0의 최대 전류인 400mA로 충분하다. 따라서 외부전원은 당연히 불필요하다. USB 2.0에서는 USB 1.1 장치또한 연결 가능하다. USB 2.0 인터페이스를 따르는 장치는 USB 1.1또한 기본적으로 지원하는 셈이다.

USB 메모리는 저장 장치이다. 저장 장치라면 MBR이라 불리는 영역이 기본적으로 존재한다. 이 영역에서는 MBR 코드와 파티션 정보가 기록되어 있다. (물론 Magic Code도 있다.. 0x55AA) 각 파티션 별로 PBR이 존재한다. 부팅 과정에 있어서, MBR -> 부팅 또는 MBR -> PBR -> 부팅으로 이루어진다. 여기서 말하는 PBR은 활성화 파티션을 말하는데 Windows에서는 이동식 장치에 대해서 한 개의 파티션만 지원하고 기본적으로 첫번째 파티션이 활성화 상태이다. 모든 저장 장치에 있어서, 전부 부팅이 가능하다. 부팅이 불가능한 경우는 존재하지 않는다. Public 영역이 존재하지 않아 위의 부트 프로세스에 진입하지 못하는 경우를 제외하곤 말이다. (디스크 전체가 보안 영역으로 잡히는 등의 상황을 말한다. 하지만 시중에 팔리는 USB는 이런 식으로 가공되어 나오지 않는다.) PBR의 수정만으로 부팅이 안되는 경우는, 부트 프로세스가 MBR에서 끝나는 경우인데 표준 MBR을 이용하여 다시 기록하면 Active Partition의 PBR로 제어권이 넘어오게 된다.

USB 메모리를 통제하는 컨트롤러가 존재한다. USB 메모리에는 컨트롤러라 불리는 반도체가 꼭 들어간다. 이게 없는 USB는 하나도 없다. (물론, 눈으로 안보이는 경우도 있다. 요새는 molding 형이라 하여서 하나의 IC에 메모리와 컨트롤러를 넣어서 단일 칩으로 만든 경우가 있다.) 컨트롤러가 하는 주된 기능은 USB 메모리와 PC의 연결을 중간에서 중계하는 역할이다. 즉 USB 메모리는 반도체에 불과하고 어디에 데이터를 저장해야 하는지는 모른다. 이때 컨트롤러가 위치를 잡아준다. MP Tool에서 설정가능한 Autorun Area나 Private Area, Floppy Area는 컨트롤러에서 메모리의 Region 설정을 통해 (펌웨어 업데이트) 이루어진다.

컨트롤러 차원에서 지원하는 기능이 몇가지가 존재한다. 컨트롤러 제조사 별로 다르지만 명칭만 다를뿐 기본적인 틀은 동일하다. 바로 '보안 파티션 (패스워드/Login 기능)'과 '다중 파티션', 'CD영역 (Autorun Area)이다. 여기서 말하는 다중 파티션은 Windows에서 지원하지 않는 그 '다중 파티션'이 아니라 컨트롤러 차원에서 구분되는 기능이다. 이 경우 Windows에서는 다른 Device로 인식하여 결과적으로는 다중 드라이브의 인식이 가능해준다. (하지만 Windows가 지원하지 못하는 '다중 파티션'은 한개의 이동식 Device에서 여러 개의 파티션을 지원하지 않는다는 뜻이다.) CD영역은 대부분의 컨트롤러에서 지원한다. PC Lock 기능 또한 컨트롤러 차원에서 지원되는 기능이다. (필자가 확인한 바에 따르면 SMI 컨트롤러만 지원하는 듯 하다.) 여기서 모든 컨트롤러라 하지 못하고 대부분의 컨트롤러라 하는 이유는, 시장에 출시되는 대부분의 USB 메모리는 (특히 중소기업의 USB 메모리들) USBest, SMI, Skymedi 중 하나의 컨트롤러를 사용하기 때문이다. 이들 외에도 많다. Transcend 사의 경우 Alcor 컨트롤러를 사용하는 경우다.


다시 USB 메모리 광고를 살펴보자.


이 USB만의 특징으로 내세울 수 있는 점은 없다. (위의 5개 기능은 모든 USB 메모리가 지원한다.)


이 장치의 특징은 암호화/복호화 기능과 동기화 기능이다. (사실 이것들도 번들 SW의 기능이지 UFD의 기능이 아니다.)


이 제품이 내세울 수 있는 특징은 ReadyBoost 기능과 생활방수 기능, 초경량 이라는 부분이다.

번들 SW의 지원 OS는 제품의 지원 OS와 다르다.
이제 번들 SW에 대해서 말해보자. 보안 파티션 로그인 프로그램이니 파티셔닝 프로그램이니 이런것들은 해당 컨트롤러의 SDK를 이용해서 제작된다. 암호화/복호화 프로그램이나 동기화 프로그램 등은 컨트롤러의 SDK를 이용하지는 않는다. 하지만 이들은 전부 Windows 에 맞추어 제작된다. 즉 USB 메모리의 지원 OS는 Windows, Linux, MAC 등 다양하게 적혀 있고 심지어 타 장치의 호환성을 강조하기도 한다. 하지만 번들 SW의 지원 OS는 이와는 다르다. 제대로 된 기능 작동은 Windows 하에서만 이루어질 수 있다. 몇몇 사람들은 타 장치 (네비게이션, PMP 등)에서도 보안 파티션을 사용할 수 있으리라 생각한다. 물론 절때 안된다.

올바른 사실을 구매자들에게 알려야 한다.
컨트롤러에서 모두 지원하는 기능임에도 불구하고, 보안 디스크  프로그램을 (컨트롤러 차원의 기능인데도) 별도로 판매하는 일부터, CD영역을 대량 구매시에만 지원해주거나, USB/저장 장치의 특성을 자사 제품만의 특성인 것 마냥 강조하는 행동이 이루어져서는 안된다. 구매자들은 바른 안목을 가지고 제품 선택을 해야 하고 말이다. 또한 컨트롤러 종류 등의 정보에 대한 공개도 이루어져야 한다. 사용자들에게 공개되는 정보는 극히 일부에 불과하다. 공개되지 않은 정보들은 USB 커뮤니티 등을 통해 공개되고 있는 실정이다. 컨트롤러나 메모리 (반도체) 간의 비교 등 사용자의 선택의 폭 또한 넓어져야 한다.

저작자 표시 비영리 동일 조건 변경 허락
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by toolz

Trackback Address :: http://toolz.pe.kr/trackback/189 관련글 쓰기

  1. Subject: USB 보안영역 비밀번호를 잊어버렸습니까?

    Tracked from 초짜 마케터의 좌충우돌기 2010/02/10 18:47  Delete

    일반USB에서 제공하는 보안기능으로 비밀번호 인증을 통해 접근할 수 있는 공간을 별도로 제공합니다. 오픈 마켓에서 판매하는 일반USB의 경우 대부분 위와 같은 보안 기능을 제공합니다. 비밀번호를 잊어버리더라도 데이터 암호화기능이 없기 때문에, 복구툴을 이용해서 비밀번호 인증 없이도 데이터를 복구할 수 있습니다. 이제 비밀번호를 잊어버렸다고하면 걱정하지 마십시오. USB 보안영역 데이터 복구 절차 1. 구입한 메모리 콘트롤러에서 사용할 수 있는 파티셔..

  2. Subject: 알아두면 돈 절약되는 우리주변의 상술들!!

    Tracked from 두두맨 2010/03/19 07:48  Delete

    안녕하세요? 이번에는 우리주변에 포진하고 있는 상점들의 마케팅 상술에 대해서 알아보려고 합니다. 혹시 다 알고 계시거나 너무 허접하더라도 양해해주시기 바랍니다.^^;; 1. 백화점 백화점만큼 마케팅기법에 대해서 공부하기 좋은 사례도 없죠. 다른 상점들에 비해 큰 기업이고 상품가격또한 만만치 않기 때문에 많은 기법들이 숨어있습니다. 지금부터 알아보겠습니다. 백화점에서 주로 팔리는 명품들이 왜 가까이 없고 꼭 꼭대기층에 있을까? 과연 왜 그런걸까요? 바..

댓글을 달아 주세요

  1. Favicon of http://dobioi.tistory.com BlogIcon dobioi 2010/12/20 08:56 Address Modify/Delete Reply

    그러게...
    현재 시장에서는 이런 일들이 난무하지.
    그건, 아마도, 무지한 소비자를 현혹시키기 위한 거겠지!
    하지만 제대로 알고 있는 선수들에게는 콧웃음만 나오게 만드는 거겠지!

    그런데도 저런게 먹힌다는 게 시장의 아이러니이자 비밀 중의 하나지!

    이론과 실재는 많이 다르다는 건, 기회가 그만큼 많다는 것일 수도 있다는...

주 : 굵은 글씨, 밑줄 쳐진 글씨만 읽어도 됩니다.

작성 : 김광민 (http://toolz.tistory.com, http://www.usboffice.kr )
버전 : 20091007

Q1. USB의 컨트롤러 판별은 VID,PID로 한다?
수많은 사람들의 질문이자 논란거리입니다. 이 문제를 단순화하면 VID,PID (이하 VPID)가 컨트롤러 판별자로 쓰일 수 있냐는 것입니다. 물론 제품 판별 (PID : Product ID)과 제조사 판별 (VID : Vendor ID)은 가능합니다. 그러나 이것은 해당 USB컨트롤러 제조사에서 이것이 자사의 어떤 제품이다 하고 식별하려는 목적인 것이며, 컨트롤러의 식별자로써 기능은 없습니다. (물론 VID는 일정할 것이므로 VPID로 컨트롤러를 파악할 수는 있지만, 이는 의미있는 자료가 되지 못하죠.) 이 주장을 뒷받침하는 근거들로는

  • VPID를 저장/등록하는 기관이나 데이터베이스 따위는 존재하지 않는다.
  • MP tool로 VPID의 수정이 가능하다.
  • VID, PID의 사전적 뜻

등이 있습니다. 이러한 근거들로 미루어봐서, 컨트롤러 식별로써의 가치는 없죠. (SMI_UFD_Utillity는 VPID를 어떻게 변경하더라도 SMI컨트롤러이면 무조건 인식합니다.)

아래 그림을 보면, USB 그룹 안에 VID, PID 부분; Vendor String, Product String, Serial 등을 조정함으로써 흔히 말하는 '식별자'를 수정할 수 있죠. (SMI MP Tool입니다. : sm32xTest)


결론 : VID, PID로 컨트롤러를 확인할 수 없다.

Q2. 그러면 컨트롤러 식별은 뭘로 하냐?
컨트롤러 식별은 어떤 것으로 해야할까요? 방법은 간단합니다. 각 회사의 MP Tool을 하나씩 돌려보면서, USB 장치가 올바르게 인식되면 그 컨트롤러인 것입니다. 이 주장을 뒷받침하는 근거나 추론은

  • 자사의 MP Tool은 자사의 제품을 식별할 수 있는 것은 당연하다.
  • 컨트롤러에 따라서 USB 내부 로직이 달라지므로, 자사의 MP Tool에서만 식별이 가능하다. (물론 내부적으로 데이터 체크 등의 루틴또한 존재할 것이다.)
  • 만약 타사의 컨트롤러까지 폭넓게 인식을 해서 생기는 문제가 있다면, 그러한 AS문제는 고스란히 제조사로 갈텐데 그냥 체킹 루틴 하나 넣는게 AS비용보다 현실적으로 적다.

충분히 MP Tool이 식별가능하죠? (물론 추론이 들어가있기 때문에 비교군이 필요하긴 하지만, Skymedi에서 나오는 Access Error나 SMI_UFD_Utillity 에서 Skymedi 제품을 못잡는 등의 현상으로 미루어봐서, 충분히 가능할 것으로 보임.)

그리고 VPID를 SMI -> Skymedi 용으로 변경한다고 한들 SMI MP Tool에서는 한결같이 잘 표시해주며 Skymedi에서는 계속 Access Error를 줍니다. VPID를 변경한다고 컨트롤러 식별이 달라진다면 아니여야 할텐데.

결론 : MP Tool을 이용하여 해당 USB장치의 컨트롤러를 구별할 수 있다.

Q3. 같은 컨트롤러라고 하더라도 CD영역이 불가능한 제품이 있다?
뭐하러 그렇게 복잡하게 만들까요? 같은 컨트롤러라 함은 같은 기능을 제공한다는 뜻이며, 이는 각 USB 제품이 사용할 수 있는 기능들이 동일하다는 뜻이며, 이는 한 컨트롤러가 CD영역이 가능하면 그 컨트롤러를 사용하는 제품은 무조건 CD영역이 된다는 것입니다.
결론 : 특정 컨트롤러라 CD영역을 지원할 경우, 그 컨트롤러를 쓰는 모든 제품은 CD영역을 지원한다.

Q4. 용량이 0Byte가 된 경우 복구가 불가능하다?
SMI 컨트롤러에서 겪은 현상으로 반론을 해보겠습니다. CD영역 생성중 Fail이 나거나 기타 오류로 인해 용량을 인식하지 못하거나 0Byte로 잡히는 일을 겪었습니다. (보통 Factory Driver가 아니라 일반 모드에서 해서 일어나는 현상입니다.) 그러나 기존에 알고있던 정보로 VPID를 세팅하여 Factory Driver를 설치하니 정상적으로 잡혔습니다. 물론 용량, 메모리 정보 등은 사전에 확보를 해놓아야 하지만 (MP Tool 실행만 해도 나오는게 이거죠) 어쨌든 이러한 정보들을 수동으로 맞추고 Start 하니 올바른 정보를 세팅하여 원래 용량을 되찾았습니다. 요약하면, Factory Driver를 잡아서 직접 수동으로 세팅을 하면 원래의 내 USB장치로 복구할 수 있다는 뜻입니다. 사전에 알아내야 하는 항목들은 VID, PID, Memory Id (Samsung K9285.. 이런거) 등입니다. Setting에서 이러한 정보들을 수동으로 지정하고 나면 올바르게 복구할 수 있습니다. 굳이 SMI만이 아니라 타 컨트롤러의 MP Tool에도 Factory Driver 내지는 Bulk Driver에 대한 항목이 있습니다.
결론 : 용량이 0Byte로 잡혀도 복구가 거의 가능하다고 할 수 있다.

Q5. VPID가 변경되었으면 망한 것이다? 변경이 불가능하다?
Q1에서 나온 그림을 보면 참 친절하게 변경하는 곳을 안내해줍니다.
결론 : 100% 변경 가능하며 어떠한 리스크도 없다.

퍼가시더라도 원문을 긁어가진 마시고 링크로 해주세요. 나중에 수정할때 그래야 업데이트 된거로 볼 수 있음.

저작자 표시 비영리
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by toolz

Trackback Address :: http://toolz.pe.kr/trackback/159 관련글 쓰기

  1. Subject: USB VID/PID와 MPTool

    Tracked from 마음을 움직여라 2010/02/11 13:22  Delete

    이것 저것 검색하다 보니 재밌는 글을 발견하였기에 나름 관련 업계 종사자로서 의견을 제시해본다. 아래 글을 읽기전에 USB MPTool과 관련한 몇가지 오해와 사실 을 휘리릭 둘러보시는게 좋겠다. Q1 : USB의 컨트롤러 판별은 VID, PID로 한다. A1 : X VID, PID는 USB Device에 대한 제조업체 및 제품 식별 번호입니다. 컨트롤러 판별과는 무관합니다. 컨트롤러 판별을 하는 기준이라고 오해하는 것은 국내에서 제조되는 USB 드..

댓글을 달아 주세요

  1. 삼각형 2009/10/07 23:26 Address Modify/Delete Reply

    UO에서 싸우면 안좋을것 같아서.

    VPID를 저장/등록하는 기관이나 데이터베이스 따위는 존재하지 않는다. - 연관성 부족, VPID로 구분한다고 해도 꼭 기관이나 데이터 베이스가 있어야만 하는건 아닙니다.
    MP tool로 VPID의 수정이 가능하다. -근거 부족, 그러면 핸드폰의 고유번호는 어떻게 조작되는거죠?
    VID, PID의 사전적 뜻 - 추론, 사전적 뜻과 관련 없이 사용될 수 있습니다.

    자사의 MP Tool은 자사의 제품을 식별할 수 있는 것은 당연하다. - 추론 근거 없음
    컨트롤러에 따라서 USB 내부 로직이 달라지므로, 자사의 MP Tool에서만 식별이 가능하다. (물론 내부적으로 데이터 체크 등의 루틴또한 존재할 것이다.) - 추론 존재하는지 아닌지 모름.
    만약 타사의 컨트롤러까지 폭넓게 인식을 해서 생기는 문제가 있다면, 그러한 AS문제는 고스란히 제조사로 갈텐데 그냥 체킹 루틴 하나 넣는게 AS비용보다 현실적으로 적다. - 추론 원래 CD영역 자체가 A/S불가임.

    • Favicon of http://toolz.tistory.com BlogIcon toolz 2009/10/08 16:49 Address Modify/Delete

      반론.
      1. 그럼 내가 VPID를 090C 1000 이 아닌 Skymedi 값으로 변경을 했어요. 그런다고 SMI -> Skymedi로 바뀌거나 SMI MP Tool에서 인식을 못하고 그러던가요?

      2. 내 회사 제품을 MP Tool이 식별 못하면 그럼 MP Tool이 병신이죠.
      3. 컨트롤러의 기능을 따져보면 당연히 MP Tool에서 식별가능한 코드가 존재하죠.
      4. AS가부 문제는 그 이후 문제임. 실리를 따져서 CD영역 관련 문제는 AS불가로 한 것임.

    • Favicon of http://toolz.tistory.com BlogIcon toolz 2009/10/08 16:53 Address Modify/Delete

      내용 추가.
      MP Tool의 VPID수정 가능 여부와 휴대폰의 고유번호가 무슨 상관이죠?

  2. 삼각형 2010/01/01 14:36 Address Modify/Delete Reply

    1. 그러니까 그게 모든 툴이 그렇게 한다는 일반론적인 추론이 성립하지 않는다는 겁니다. toolz님이 실험한 툴은 그렇지만 아닐 가능성도 있습니다.
    2. 그리니까. 그런 프로그램이 꼭 있습니다. 그러니까 이것도 모두 다 그렇지 않을 가능성이 있습니다.
    3.역시 식별가능한 코드가 존재하는지 아닌지 어떻게 합니까? 뭐 규격 이런거 있나요?
    4.그러니까 A/S하기 귀찮아서 검사 루틴을 넣지는 않을껍니다. 왜냐. A/S의무가 없으니까.

    추가.
    그러니까 고유번호는 뭐든지 변경 불가라는 toolz님 생각이 아닐 수도 있다는걸 말하는겁니다.
    원칙적으론 변경 불가지만 조작의 가능성이 있다는거죠.

    제가 이야기 하고자 하는 것은 toolz님의 추론이 분명 toolz님이 실험하신 툴엔 맞았습니다만, 그렇다고 모든 툴이 그럴것이다라는 논리는 아니라는겁니다.

    • Favicon of http://toolz.tistory.com BlogIcon toolz 2009/10/08 19:06 Address Modify/Delete

      1. 아닐 가능성은 제로. SMI<->Skymedi의 이기종 상호호환도 아닌 뿐더러, 기존에 단순 Hex코드로 식별자 기능을 한다는 전제를 깔고 보면 당연히 성립하죠. 그러면 내 말에 반대가 되는 증거를 대보세요. 단순한 확률 말고.

      2. 그런 프로그램이 있으면, MP Tool로써의 기능을 할 수 있습니까? 애초에 MP Tool자체가 아니죠.

      3. DeviceIoControl API의 IOCTL 부분 : USB, Storage 부분 코드들 살펴보세요. Device에 직접 전송할 수 있으므로, 내부 루틴이 존재 가능하며 이를 통신 수단으로 활용할 수 있음이 성립됩니다.

      4. 그럼 제조사가 AS안하면 뭐해.

      하나만 국소적으로 증명을 했지만, 대전제를 위반하지 않고 이성적으로 생각하나 실리, 사전적 정의를 따져보면 굳이 증명하지 않아도 성립한다고 할 수 있죠.
      수학 용어에 보면 WLOG라는 것이 있습니다.
      '일반성을 잃지 않고', 즉 같은 방법으로 라는 뜻인데 대전제가 동일하고 두개의 사건이 서로 상호배제인 경우 사용 가능합니다.

      지금 이 경우와 동일하죠. 확률만 제시하지 말고 반례를 들어보세요. 확률은 내가 USB 컨트롤러 제조사를 전부 인터뷰하지 않는 이상 얼마든지 존재할 수 있습니다.

    • 삼각형 2010/01/01 14:37 Address Modify/Delete

      전 MP툴이 자신의 컨트롤러를 인식하지 못한다는것이 아니라, 가능성을 이야기 한겁니다.
      즉, MP툴이 인식했으니까 이 툴은 무조건 해당 USB스틱에 CD영역을 생성할 수 있는 툴은 아니라는 겁니다.
      Q2 의 논리에 따르면
      MP 툴이 제품인식에 성공했다면, 무조건 CD영역 생성이 가능하다고 오인할 가능성이 있으니까요.

    • Favicon of http://toolz.tistory.com BlogIcon toolz 2009/10/09 23:10 Address Modify/Delete

      MP Tool에서
      해당 컨트롤러를 인지하고
      띄워주는데 CD영역이 안될 가능성이 있냐고요?

      MP Tool에서 된다고 띄워놓았는데
      컨트롤러에서 지원하는 기능인데
      그걸 지원하지 않는다는게 말이 됩니까

  3. wef 2011/04/13 21:05 Address Modify/Delete Reply

    그래서 결론이 usb pid 값을 변경을 할수있다는 건지 없다는건지..
    변경할수있으면 어떻게 해야 하는건지..

    • Favicon of http://toolz.pe.kr BlogIcon toolz 2011/04/14 21:54 Address Modify/Delete

      VID, PID 변경 가능.
      각 usb컨트롤러 별 공장 초기화 도구를 이용해 변경 가능합니다.



파일 이름은 x_mount와 같은 형태로 지정을 해주면 됩니다.
여기서 x는 바꿀 문자입니다. 바뀌어지는 드라이브는 실행 파일이 존재하는 드라이브입니다.

즉, CurrDrive -> x drive 로 바뀌는 형태입니다.

단지 실행만 하면 되며, 제약 사항은 Visual Studio 2005 재배포 가능 패키지가 설치되어야 합니다. 대부분의 PC에는 있습니다.


어떻게 하면 저 패키지 없이 배포할 수 있지 ㅠㅠ

전문 스크랩보다는 링크로 부탁드립니다;

저작자 표시 비영리
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by toolz

Trackback Address :: http://toolz.pe.kr/trackback/140 관련글 쓰기

댓글을 달아 주세요

  1. Favicon of http://triangle.blogner.com BlogIcon 삼각형 2009/09/11 15:48 Address Modify/Delete Reply

    이전 버전과 다른 점은?

    • Favicon of http://toolz.tistory.com BlogIcon toolz 2009/09/11 17:35 Address Modify/Delete

      1. 오류메세지 처리 일원화
      2. 논리적 오류 수정
      3. 코드 간결화
      4. 디버깅 요소 전부 제거 (일부 남아있었음)
      5. 내부 로직 일부 변경.

  2. HMR 2009/11/29 08:54 Address Modify/Delete Reply

    재배포 안쓸려면 6.0 IDE를 쓰면 됩니다.