이번에 판매가 시작되는 Palm Pre의 기능중 하나가 iTunes에 연결해 아이팟/아이폰과 동일하게 뮤직 라이브러리를 싱크할 수 있는 것이다.

다만 애플에서 허가해 주지 않았는데 어떻게 구현했는가가 궁금했는데 Jon Lech Johansen의 블로그에 올라온 디바이스 리포트에 그 비밀이 밝혀졌다.

Palm Pre에는 'USB Drive' 모드와 'Media Sync' 모드가 있는데 각 모드인 경우 USB 디바이스 리포트가 달라진다. 위의 그림에서 볼 수 있는것처럼 Media Sync모드에서는 Palm Pre를 아이팟이라고 리포트를 해서 iTunes에게는 아이팟이 연결된 것 처럼 속여주는 것이다.
이렇게 되면 iTunes는 아이팟이 연결되었다고 생각하고 동작하게 된다.

다 만 이 방법은 mass storage device를 iPod이라고 이야기하는 것 뿐 저 화면에는 나오지 않았지만 root USB node (IOUSBDevice)는 'Palm Pre'라고 알려주고 있기 때문에 IOUSBDevice와 위의 4번 엔트리 값을 비교하면 매우 쉽게 이 편법을 쓸 수 없게 만들어 줄 수 있다. 아마 조만간 아이튠 업데이트에 이 부분이 추가될 가능성이 상당히 크다고 본다. (현재 iTunes 8.2에서는 아직까지 이 편법이 동작한다.)
Posted by nautes

처음에 클리앙에 올렸던 글인데 조금 다듬고 정리해서 다시 올린다.

 

사용자 삽입 이미지


* 첨부한 그래프는 HDD로부터 1GB 파일을 옮기는데 걸리는 시간을 비교한 것이다. 단위는 초이기 때문에 짧을수록 성능이 좋은 것임.

IEEE 1394와 USB, 서로 유사한것 같은데 두개의 차이를 정확히 아는 사람이 많지 않은거같아 나름대로 정리해 보겠다.

현재 시장 상황을 보면 USB의 압도적 승리이다. 물론 그렇다고 IEEE 1394가 없어진건 아니지만 거의 모든 컴퓨터에 USB는 기본 장착되어 있는데 비해 IEEE 1394를 쓰고 싶으면 따로 카드를 구입해야 하는 경우가 많다.

1394가 usb에 비해 덜 사용되는 가장 큰 이유는 가격때문이다. 물론 업체의 프로모션/마케팅 영향도 전혀 없지는 않겠지만.

USB는 master-slave 구조라 usb host controller에서 모든 통신을 관리하는데 비해 1394는 모든 디바이스에 controller가 있어서 각각이 master/slave가 될 수 있다. USB 디바이스는 대부분 클라이언트로만 동작하면 되니까 칩셋의 가격이 저렴할 수 있다.

USB는 기본적으로 컴퓨터(USB host controller)가 없으면 USB 디바이스간 통신이 불가능하지만 1394는 모든 디바이스간 직접 통신이 가능하다.

예를 들어 캠코더와 외장하드를 직접 연결해서 바로 파일전송이 가능하다.

물론 캠코더에 usb host controller를 넣으면 불가능하지는 않지만 그런 경우 가격도 많이 올라가고 1394에 비해 별다른 장점이 없다.

그리고 그 USB포트는 호스트가 되기 때문에 캠코더(호스트)와 하드(클라이언트)는 연결이 돼도 캠코더(호스트)-컴퓨터(호스트)는 연결할 수가 없다. 결국 호스트 포트/클라이언트 포트를 따로 둬야 하는 경우가 발생하는거다. (물론 USB 진영에서도 이런 문제를 해결하기 위해 USB OTG(On The Go)를 만들었지만 아직까지 그렇게 널리 사용되는거 같지는 않다.)

그게 USB로 컴퓨터 2대를 직접 연결해서 파일 전송이 안되는 이유다. 둘 다 USB 호스트이기 때문이다. 하지만 1394를 사용하면 컴퓨터 2대를 직접 연결해서 파일 전송도 얼마든지 가능하다.

XP SP2부터인가는 TCP/IP over 1394를 지원해서 그냥 케이블만 꼽아주면 바로 컴퓨터간 네트웍이 구성된다. 집에서 책상에 있는 pc 2~3대 연결하는 경우라면 사실 fast ethernet 보다 1394 허브 구해서 연결해 주는게 전송속도가 훨씬 빠르다.

또한 1394는 각 디바이스마다 controller를 가지고 있기 때문에 컴퓨터에 부하를 최소화 할 수 있기 때문에 스펙상의 최대 전송률은 USB2.0이 더 빠를지 몰라도 실제 전송률은 1394가 더 빠르다.

참고로 1394b는 800 Mbps 전송이 가능하지만 이것 역시 아직은 많이 사용되지 않아서 일반적으로 1394라고 이야기하면 400 Mbps를 전송할 수 있는 1394a를 말한다. 여기서 비교하는 USB는 USB 2.0 high-speed 전송을 말한다.


PS1. Windows Vista부터는 다시 TCP/IP over 1394 지원을 빼 버렸다고 한다. 이해할 수 없는 놈들 -.-;

PS2. 어느 분이 위에 그림이 Mac 기준인데 intel-based mac에 USB 버그(?)가 있어서 USB 전송속도가 떨어지기 때문에 자료의 신뢰성에 의문을 가졌기에 구글신에게 물어봤다.


Mac OS의 USB protocol stack에 약간의 버그가 있는건 확실한거 같다.

High speed ISOCH transfer에 문제가 있다는데 그건 ISOCHRONOUS(등시성) 전송 모드에서 발생하는 것이다. 등시성 전송은 일정한 속도로 도착해야만 하는 스트리밍이나 리얼타임 데이터 전송에 사용하는 전송 모드이다.

Mass Storage(대용량 저장장치) 클래스는 USB의 4개의 전송모드 중 BULK 모드만 사용하거나 (USB spec. for mass storage devices v1.0) 아니면 CONTROL/BULK/INTERRUPT 모드만 사용 (USB spec. for mass storage devices v1.1)한다.

결론적으로 Mac OS에 있다는 버그는 하드디스크 전송에 있어서는 관계가 없다.

버그가 문제가 될 수 있는 부분이라면 USB 웹캠같은 장치들에서 발생할 가능성이 있을수도 있겠지만....


IEEE Microprocessor Standards Zone

USB Organization

Posted by nautes

이전버튼 1 이전버튼