일단 이거 하나로 글이 너무 많아져서 민망합니다만, 이제 정리가 모두 되었으니 정리 차원에서 적어봅니다. 


1. 원래는 ADB to USB 컨버터를 만드는 것이 목적이었으나, USB보드(Teensy)재고가 없어 어쩔 수 없이 Teensy++ 를 사게 되었습니다. 

   그런데 이게 DIP 40 PIN구조로 기존의 Apple Desktop Bus Keyboard 컨트롤러와 사이즈가 정확하게 일치 합니다. 

   그래서 오픈소스를 이용하여 USB컨트롤러를 만들어보게 되었습니다. 여기서 전제 조건은 기존의 키보드를 해치치 않는 것입니다. 

   가령 와이어링을 하면 쉽습니다만, 기존의 PCB 패턴을 모두 끊어야 하므로 안됩니다. 

   (Teensy++ 2.0은 www.pjrc.com 에서 직접 구매하였습니다. ) 

   ( ADB to USB converter : http://geekhack.org/showwiki.php?title=Island:14290 )


2. 우선 키보드 매트릭스를 생성하였습니다. 이거 하느라고 멀티테스터도 구매를 하게 되었습니다. 

    처음 해보는 매트릭스 따기(?)였으나 막상해보니 쉽더군요. 다만 문제가 

    a. 이 키보드에서 사용하는 modifier 키는 matrix를 사용하지 않는 다는 것입니다. 전용 포트가 있더군요. 

        이것 때문에 소스 고치는데 약간 혼란 스러웠습니다. 

    b. Caplock이 똑딱이 스위치 입니다. 현재 소스를 아주 약간 수정하면 될 것으로 보입니다만, 거의 안쓰는 키이기 때문에

       안건드렸습니다. 

    c. Power Switch는 심지어 매트릭스도 사용하지 않습니다. ADB 커넥터가 Power Switch 용 핀이 따로 있기 때문에 매트릭스를 사용

       하지 않습니다. 덕분에 이녀석도 패스입니다. (와이어링을 하면 되긴 합니다만, 그럴 경우 언제든지 컨트롤러만 바꿔끼면 ADB로 

       쓸 수 있어야 한다는 대 전제에 어긋납니다. )





3. 기존 컨트롤러 소켓에 Teensy++ 2.0을 꼽으니 몇가지 문제가 생겼습니다. 

    a. PCB에서는 Power/Ground로 묶여 있으나, Teensy++ 2.0에서는 In/Out port로 사용합니다. 이건 해당 포트를 안쓰면 되니 

       상관없습니다만, 해당포트를 floating으로 유지하거나 묶여 있는 Power/Ground로 출력을 유지시키거나 아니면 입력으로 설정

       을 해줘야 합니다.

    b. PCB에서는 매트릭스로 사용하는 핀이 Teensy++ 2.0에서는 R ref/GND로 묶여있는 핀이 있습니다. 이건 소켓과 연결을 해주면

       안되고, 사용하지 않는 다른 핀으로 bypass를 해줘야 합니다. 


위 2/3번에 관련된 내용은 다음 글에 있습니다. http://applefan.tistory.com/47




4. Teensy++ 2.0에는 USB mini-B type의 커넥터가 있습니다. 이것을 사용하면 요즘의 PC/Mac에 바로 붙일 수 있지요. 문제는 이 

   커넥터에 연결한 케이블을 어떻게 밖으로 뺄 것이냐 입니다. 쉽게 생각해서 ADB 커넥터 하나 띠어 내면 쉽습니다만, 만약 안에서 

   케이블이 빠지면 나사를 풀고 다시 연결해야 합니다. 그러다 보니 커넥터를 하나 박아 넣자였습니다. 



   결과적으로 ADB커넥터 케이스에 USB mini-B 커넥터를 넣어 버렸습니다. 자세한 것은 다음 글에서 보실 수 있습니다. 

    http://applefan.tistory.com/49



5. Firmware 의 소스에 문제가 있었습니다. 윈도우즈에서는 문제가 없지만, Mac에서는 키를 하나 누르면 두세번씩 찍히는 문제가

   있어 실제 사용에 있어서 불가능한 것이었습니다. 중간에 약간의 꼼수를 써서 이러한 문제를 95%이상 없앴습니다만, 어찌되었건

   여러번 찍히는 문제는 실제 사용에 막대한 지장을 주게 됩니다. 이래저래 찾아보니 큰문제는 없어 보이는 소스이지만, USB interrupt

   와 matrix scan사이에서의 타이밍 문제란 것을 알게 되었고, 결국 USB Full speed device설정을 low speed device설정으로 바꿔서

   이러한 문제를 피해갈 수 있었습니다. (소스를 여기저기 고쳤습니다. )

   

    추가합니다. @2011/03/26

    이 문제는 Mac OSX의 USB처리 문제로 밝혀졌습니다. OSX에서는 애플사 키보드인 경우 IDLE을 0m로 가져가지만, 

    타사 키보드인 경우 IDLE타임을 가집니다. 그래서 기존의 USB interrupt routine으로는 에러가 납니다. 

    현재 Geekhack 소스는 수정이 되어있는 상태이고, Vendor ID를 Apple로 지정할 경우 문제는 사라집니다. 


6. 제가 가진 키보드는 Made in Japan입니다. 오렌지 슬라이더죠. 여기서 발생하는 소음과 키감 개선을 위한 윤활/개조를 모두

   마쳤습니다. (관련 글 http://applefan.tistory.com/42 ) 그런데 이번에 지인을 위해 구매대행을 한 것은 Made in Taiwan이었습니다.

   이 것이 스위치도 다르고, PCB도 다르고, 컨트롤러가 박힌 방향도 다릅니다. 그러다 보니 기존과 같은 개조와는 좀 다르게 진행을

   해야 했습니다.  그러나 가장 큰 문제는 덮개가 완벽하게 덮이지 않는다는 것이지요. 일단 이 문제는 해결 방법을 찾고 있습니다. 

   (덮개가 장착은 되나 좀 튀어나와 보기에 약간 안좋습니다. )

    Made in Taiwan을 위한 개조는 다음 글에 있습니다. ( http://applefan.tistory.com/51 )




   

이로써 Made in Japan/Taiwan 두대를 개조해 보았습니다. 펌웨어도 안정적이고 만족하고 있습니다. 

제가 수정한 소스는 원소스에 추가를 할 예정입니다. (원 소스 제공자에게 연락을 하려하고 있습니다. )


제가 여기저기 관련 글을 남발하여서 좀 민망합니다만, IIgs쓰시는 분들에게 도움이 되길 바라겠습니다. 


profile

Apple IIgs/Apple Adjustable/Apple Extended II/Tactile Pro 

구형 애플제품에 환장해 있습니다.