본문 바로가기

Apple (아이폰/아이팟터치/아이패드/맥)

해킨토시에서 아이폰 태더링 실패 시... AppleUSBEthernetHost.kext 인식시키는 방법

Dec  5 11:17:24 PRO kernel[0]: kxld[com.apple.driver.AppleUSBEthernetHost]: The super class vtable '__ZTV20IOEthernetController' for vtable '__ZTV20AppleUSBEthernetHost' is out of date. Make sure your kext has been built against the correct headers.



AppleUSBEthernetHost.kext_v2.3.0.zip


2012-12-05_AppleUSBExt_SSibal.rtf



썅 이것때문에 태더링 안되는구나.


/var/log/kernel.log



Dec  5 19:02:06 PRO kernel[0]: kxld[com.apple.driver.AppleUSBEthernetHost]: The super class vtable '__ZTV20IOEthernetController' for vtable '__ZTV20AppleUSBEthernetHost' is out of date. Make sure your kext has been built against the correct headers.

Dec  5 19:02:06 PRO kernel[0]: Can't load kext com.apple.driver.AppleUSBEthernetHost - link failed.

Dec  5 19:02:06 PRO kernel[0]: Failed to load executable for kext com.apple.driver.AppleUSBEthernetHost.

Dec  5 19:02:06 PRO kernel[0]: Kext com.apple.driver.AppleUSBEthernetHost failed to load (0xdc008016).

Dec  5 19:02:06 PRO kernel[0]: Failed to load kext com.apple.driver.AppleUSBEthernetHost (error 0xdc008016).

Dec  5 19:02:06 PRO kernel[0]: kxld[com.apple.driver.AppleUSBEthernetHost]: The super class vtable '__ZTV20IOEthernetController' for vtable '__ZTV20AppleUSBEthernetHost' is out of date. Make sure your kext has been built against the correct headers.

Dec  5 19:02:06 PRO kernel[0]: Can't load kext com.apple.driver.AppleUSBEthernetHost - link failed.

Dec  5 19:02:06 PRO kernel[0]: Failed to load executable for kext com.apple.driver.AppleUSBEthernetHost.

Dec  5 19:02:06 PRO kernel[0]: Kext com.apple.driver.AppleUSBEthernetHost failed to load (0xdc008016).

Dec  5 19:02:06 PRO kernel[0]: Failed to load kext com.apple.driver.AppleUSBEthernetHost (error 0xdc008016).




구글번역기

https://discussionsjapan.apple.com/thread/10102167?start=15&tstart=0


KEXT 관련 명령에 대한 추기. 만약 교체하거나해도 가지 않는 경우는 KEXT 캐시이다

 

> / System / Library / Caches / com.apple.kext.caches

> / System / Library / Extensions.mkext


지우고 다시 시작하면 잘될지도 모른다. 전자는 10.6 이상, 후자는 10.5 이전의 물건이된다.



Mac OS X 10.6 이상에서는 kextutil 사용하면 KEXT 정상적으로 사용할 있는지 여부를 확인할 수있다.

 

> kextutil-n / System / Library / Extensions / AppleUSBEthernetHost.kext

 

no-load 지정하면 kext 실제로 kernel에로드하지 않고 타당성을 확인. 성공하면

 

> No kernel file specified; using running kernel for linking.

> / System / Library / Extensions / AppleUSBEthernetHost.kext appears to be loadable (including linkage for on-disk libraries).

 

같은 메시지가 출력되지만, 이상하다하면

 

> No kernel file specified; using running kernel for linking.

> kxld [com.apple.driver.AppleUSBEthernetHost : The super class vtable 'vtable for IOEthernetController'for vtable 'vtable for AppleUSBEthernetHost'is out of date. Make sure your kext has been built against the correct headers.

> Link failed (error code 5).

> Check library declarations for your kext with kextlibs (8).

 

등의 appears to be loadable 다른 메시지가 출력된다. 이런 경우에는 확실히 더링 없다고 생각된다.

 

것인지 다른 확인 방법은 Mac OS X 10.4 이상에서는 kextstat 사용하는 방법이있다. 인터넷 공유 iPhone USB 케이블로 연결하면 kernel AppleUSBEthernetHost.kext로드되므로 kextstat 그러면

 

> 1XX 0 0xXXXXX000 0x4000 0xX000 com.apple.driver.AppleUSBEthernetHost

 

등의 메시지 목록이 출력되고 끝에 최근에로드 드라이버로 com.apple.driver.AppleUSBEthernetHost 코드가 출력된다. 더링이 AppleUSBEthernetHost.kext 인해 실패하면 당연히이 목록에는 나타나지 않는다.

 

추천

kextutil OS X Manual Page

http://developer.apple.com/documentation/Dar​​win/Reference/ManPages/man8/kextutil.8.html

불필요한 드라이버를 깨끗이 정리, KEXT 관련 명령을

http://ascii.jp/elem/000/000/544/544198/




[2013-09-21] 그동안 아이튠즈 업데이트를 이것때문에 안했지만 iOS7 업데이트로 인해 결국 iTuns 업데이트가 불가피해졌다. (USB 저장소로 인식을 못함. 샹...) 덕분에 어쩔 수 없이 동작하던 AppleUSB kext 2.3.0 백업하고 다시 모험을 시도하기로 했다. 웬만하면 같이 업데이트된 걸로 돌아가면 좋겠는데...

어차피 코어2듀오니까 밀고 그냥 ML 이나 매버릭스로 갈아탈까... ㅆㅂ... 


[2013-09-24] kext AppleUSBEthernt 버전 2.3.0 으로 돌아가니 태더링 다시 성공. (11.1 에 같이 깔린 건 7.0.0... 웬놈의 버전만 이렇게 올라가...) 하지만 이 드라이버는 아이폰4만 되는 것 아닌가? 하는 두려움이 있음. -_-;;;

그리고 위의  "kextutil -n" 옵션을 쓰면 초반에 로드 안됨. 

분명히 캐시 삭제하고 디스크유틸리티로 권한복구 다 했는데 왜 로드가 안되지... 하고 확이해보니 저 옵션때문이었던 것 같음. 키고 나서 -i 옵션으로 interactive 하게 다음과 같이 설정하니 태더링 성공!~ 재부팅 해도 될지는 두고보자.


$ sudo kextutil -i /System/Library/Extensions/AppleUSBEthernetHost.kext

Password:

Warnings: 

    The booter does not recognize symbolic links; confirm these files/directories aren't needed for startup: 

        /System/Library/Extensions/AppleUSBEthernetHost.kext/Contents/CodeDirectory

        /System/Library/Extensions/AppleUSBEthernetHost.kext/Contents/CodeRequirements

        /System/Library/Extensions/AppleUSBEthernetHost.kext/Contents/CodeResources

        /System/Library/Extensions/AppleUSBEthernetHost.kext/Contents/CodeSignature


/System/Library/Extensions/AppleUSBEthernetHost.kext appears to be loadable (not including linkage for on-disk libraries).

Load /System/Library/Extensions/AppleUSBEthernetHost.kext and its dependencies into the kernel [Y/n]? Y

Loading /System/Library/Extensions/AppleUSBEthernetHost.kext.

/System/Library/Extensions/AppleUSBEthernetHost.kext successfully loaded (or already loaded).


/System/Library/Extensions/AppleUSBEthernetHost.kext and its dependencies are now loaded, but not started (unless they were

already running). You may now set breakpoints in the debugger before

starting them.


start /System/Library/Extensions/AppleUSBEthernetHost.kext [Y/n]? Y

/System/Library/Extensions/AppleUSBEthernetHost.kext started.

send personalities for /System/Library/Extensions/AppleUSBEthernetHost.kext [Y/n]? Y

send personality AppleUSBEthernetHost2 [Y/n]? Y

send personality AppleUSBEthernetHost [Y/n]? Y


아이폰5 태더링 가능 여부는 확인해봐야 한다...