2013/12/05

Mac OS X Mavericks に USBシリアル変換アダプタ USB-RSAQ5 のドライバをインストールする

今井 です
OS X Mavericks にアップグレードしてから約1ヶ月半が経過しました。
Mavericksは複数モニタ使用時のMissionControlが使いやすくなって仮想PCとの併用もう手放せませんね。

さて、以前から I-O Data の USB-RSAQ5 を使用しているのですが、Lion辺りで I-O Data で配布されているドライバでは動作しなくなりました。

Windows仮想マシンから使っていたため、ドライバをWindows側に入れて使っていましたが、チップメーカーのドライバを入れれば OS X Mavericks からも使えるたので手順をメモしておきます。

1. UARTチップの特定

システム情報 で USB-RSAQ5 を見てみます。

製造元は Prolific Technology Inc. となっていますので、そちらのWebサイトで製品を探します。

Serial/UART製品としては PL2303 シリーズだけのようです。
Mac OS X用ドライバのダウンロードページを見ても PL2303 シリーズ向けのものだけがあり、他は見当たりません。
USB-RSAQ5 PL2303” で検索するとこのドライバで動作したという情報が多く出てきますので USB-RSAQ5 に使われているチップは PL2303 シリーズという事で間違いなさそうです。

2. ドライバを入手

Prolific Technology Inc. にはMac OS X用ドライバのダウンロードページもちゃんとあります。

I-O Data で配布されているドライバとは違い、Mavericks もちゃんとサポートされているようです。

サードパーティのドライバということで PL2303 Serial USB on OSX Lion と Mac OS X Prolific PL2303 driver project へのリンクが貼られているのが面白いですね。

ちゃんと読んでいませんが Mac OS X Prolific PL2303 driver project の方は2008年以降リリースされておらず、それをベースに Lion, Mountain Lion 対応したものが PL2303 Serial USB on OSX Lion のようです。

今回はメーカーから出ているドライバが公式に Mavericks に対応しているので、メーカー製の物を使うことにしました。

ドライバをダウンロードしたところで早速インストールをしてみます。

3. I-O Data のドライバを削除

早速ダウンロードしたドライバをインストールしたくなりますが、その前に I-O Data のドライバが残っているはずなので削除します。

配布されているドライバパッケージの内容などからの推測ですが、カーネルエクステンション /System/Library/Extentions/IODATAUSBRSAQ5.kext を削除するだけでよさそうです。

念のため使用されていないかを確認しながら削除します。

ターミナルで次のように行います。

I-O Data のドライバが読み込まれているか確認します
PcName:Extensions loginName$ kextstat | grep -i iodata

何も表示されないということは読み込まれていないとので I-O Data のドライバを削除します。
PcName:Extensions loginName$ sudo rm -r /System/Library/Extensions/IODATAUSBRSAQ5.kext

余談ですが、読み込まれていた場合は次のようにアンロードを行います。今回は読み込まれていないのにアンロードしようとしたので結果がエラーになっていますね。
PcName:Extensions loginName$ sudo kextunload /System/Library/Extensions/IODATAUSBRSAQ5.kext
(kernel) Kext com.iodata.driver.PL2303 not found for unload request.
Failed to unload com.iodata.driver.PL2303 - (libkern/kext) not found.

また、カーネルエクステンションのファイルがわからない場合は kextstat で見つかった bundle id から本体を探す事ができます。
PcName:Extensions loginName$ kextfind -bundle-id com.iodata.driver.PL2303
/System/Library/Extensions/IODATAUSBRSAQ5.kext

4. ドライバのインストール

ダウンロードした Prolific 社のドライバはパッケージで提供されているのでそのままインストールします。

インストールされたカーネルエクステンション内部には対応製品のリストが含まれているのですが、I-O Data USB-RSAQ5 はリストに含まれていないため、リストに追加します。
ターミナルで次のように行います。

Prolific社のドライバが読み込まれているか確認します
PcName:Extensions loginName$ kextstat | grep -i prolific

当然ですが読み込まれていません。もし、読み込まれていたら次のようにアンロードを行います。当然、読み込まれていない時にアンロードしようとすると失敗します。
PcName:Extensions loginName$ sudo kextunload /System/Library/Extensions/ProlificUsbSerial.kext
(kernel) Kext com.prolific.driver.PL2303 not found for unload request.
Failed to unload com.iodata.driver.PL2303 - (libkern/kext) not found.

カーネルエクステンション内の Info.plist に追記します
追記する際に必要な情報は『製造元ID』と『製品ID』です
10進数でも使うので予め計算しておきます
製造元 ID : 0x04BB → 1211
製品 ID : 0x0A0E → 2574

書き込みに権限が必要なのでviで編集します
sudo vi /System/Library/Extensions/ProlificUsbSerial.kext/Contents/Info.plist
info.plist の内容は次のようになっていました。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
 <key>BuildMachineOSBuild</key>
 <string>10K549</string>
 <key>CFBundleDevelopmentRegion</key>
 <string>English</string>
 <key>CFBundleExecutable</key>
 <string>ProlificUsbSerial</string>
 <key>CFBundleGetInfoString</key>
 <string>ProlificUsbSerial v1.5.0, Copyright 2013 Prolific Technology Inc.</string>
 <key>CFBundleIdentifier</key>
 <string>com.prolific.driver.PL2303</string>
 <key>CFBundleInfoDictionaryVersion</key>
 <string>6.0</string>
 <key>CFBundleName</key>
 <string>Mac OS X Driver for Prolific USB-to-Serial Bridge Device</string>
 <key>CFBundlePackageType</key>
 <string>KEXT</string>
 <key>CFBundleShortVersionString</key>
 <string>1.5.1</string>
 <key>CFBundleSignature</key>
 <string>????</string>
 <key>CFBundleVersion</key>
 <string>1.5.1</string>
 <key>DTCompiler</key>
 <string>com.apple.compilers.llvm.clang.1_0</string>
 <key>DTPlatformBuild</key>
 <string>10M2518</string>
 <key>DTPlatformVersion</key>
 <string>PG</string>
 <key>DTSDKBuild</key>
 <string>10M2518</string>
 <key>DTSDKName</key>
 <string>macosx10.6</string>
 <key>DTXcode</key>
 <string>0400</string>
 <key>DTXcodeBuild</key>
 <string>10M2518</string>
 <key>IOKitPersonalities</key>
 <dict>
  <key>067B_2303</key>
  <dict>
   <key>CFBundleIdentifier</key>
   <string>com.prolific.driver.PL2303</string>
   <key>IOClass</key>
   <string>com_prolific_driver_PL2303</string>
   <key>IOProviderClass</key>
   <string>IOUSBInterface</string>
   <key>bConfigurationValue</key>
   <integer>1</integer>
   <key>bInterfaceNumber</key>
   <integer>0</integer>
   <key>idProduct</key>
   <integer>8963</integer>
   <key>idVendor</key>
   <integer>1659</integer>
  </dict>
  <key>067B_2304</key>
  <dict>
   <key>CFBundleIdentifier</key>
   <string>com.prolific.driver.PL2303</string>
   <key>IOClass</key>
   <string>com_prolific_driver_PL2303</string>
   <key>IOProviderClass</key>
   <string>IOUSBInterface</string>
   <key>bConfigurationValue</key>
   <integer>1</integer>
   <key>bInterfaceNumber</key>
   <integer>0</integer>
   <key>idProduct</key>
   <integer>8964</integer>
   <key>idVendor</key>
   <integer>1659</integer>
  </dict>
 </dict>
 <key>OSBundleLibraries</key>
 <dict>
  <key>com.apple.iokit.IOSerialFamily</key>
  <string>1.0.4</string>
  <key>com.apple.iokit.IOUSBFamily</key>
  <string>1.8</string>
  <key>com.apple.kpi.iokit</key>
  <string>10.2.0</string>
  <key>com.apple.kpi.libkern</key>
  <string>10.2.0</string>
  <key>com.apple.kpi.mach</key>
  <string>10.2.0</string>
 </dict>
</dict>
</plist>
ハイライト部分が対象となる製造元ID、製品IDになっています。USB-RSAQ5 は含まれていないのですでにある定義をコピーして USB-RSAQ5 のIDに変更した物を追加します。
  <key>04BB_0A0E</key>
  <dict>
   <key>CFBundleIdentifier</key>
   <string>com.prolific.driver.PL2303</string>
   <key>IOClass</key>
   <string>com_prolific_driver_PL2303</string>
   <key>IOProviderClass</key>
   <string>IOUSBInterface</string>
   <key>bConfigurationValue</key>
   <integer>1</integer>
   <key>bInterfaceNumber</key>
   <integer>0</integer>
   <key>idProduct</key>
   <integer>2574</integer>
   <key>idVendor</key>
   <integer>1211</integer>
  </dict>

I-O Data から配布されているドライバには『製造元ID:067B』『製品ID:AAA2』の定義が含まれていましたが、必要になった時に追加すればよいでしょう。

リストに製品IDを追加したら、カーネルエクステンションのキャッシュをリフレッシュします。
PcName:Extensions loginName$ sudo kextcache -system-cache

5. 結果確認

インストールが出来たので USB-RSAQ5 を接続してカーネルエクステンションがロードされているか確認します。
PcName:Extensions loginName$ kextstat | grep -i prolific
  144    0 0xffffff7f821c3000 0x7000     0x7000     com.prolific.driver.PL2303 (1.5.1) <127 36 5 4 3>

カーネルエクステンションはちゃんとロードされています。シリアルポートがデバイスとして認識されているか確認します。
PcName:Extensions loginName$ ls /dev/tty.*
/dev/tty.Bluetooth-Incoming-Port
/dev/tty.Bluetooth-Modem
/dev/tty.XxxxxxxxPhone5-Wireles
/dev/tty.usbserial

ちゃんとデバイスとして認識されています。

以上で USB-RSAQ5 が使えるようになりました。
今後、ドライバをアップデートするたびに同じことをしなければならないのが面倒ですが仕方がないですね。

2 件のコメント :

  1. 何回も手続きを確認したのですが、うまくいかなかった。USB-RSAQ5を3個も試してみました。Yosemite 10.10.3です。

    返信削除
  2. happy to be able to visit your web ... successful greetings from hargasamsungsmartphone.com
    <Samsung Galaxy S4
    Samsung Galaxy Y
    Samsung Galaxy S 3
    Samsung Galaxy Tab 3

    返信削除