OSX 10.11 El Capitan で boot-args "kext-dev-mode" は廃止されました

# El Capitan で CG-USBRS232R を使うのはあきらめましょう

* System Integrity Protection Guide -- [Kernel Extensions](https://developer.apple.com/library/mac/documentation/Security/Conceptual/System_Integrity_Protection_Guide/KernelExtensions/KernelExtensions.html)
    * El Capitan で ベンダーシグネチャ無しのkextを実行するには Recovery OS で起動して ```csrutil``` コマンドで切り換える必要があります。
        1. Recovery OS を起動する
        1. csrutil enable --without kext
        1. reboot

## 正規のドライバで動く USBシリアル変換ケーブルを使って
* あんまり筋が良いとは言えないので、あきらめてシグネチャ有りのkext使った方がイイよ。
* Prolific　2302　ドライバが使用できる USBシリアル変換コネクタ
  * [Plugable USB‐9ピンRS232 PL2303HX Rev Dチップ](http://amazon.co.jp/dp/B00425S1H8) 2016年04月29日現在 ￥1,680
  * [Ugreen USB-RS232 DB9ピン PL2303チップセット 1m](http://amazon.co.jp/dp/B00QUZY4UG) 2016年04月29日現在 ￥899

# Yosemite で CG-USBRS232R を使うには

USBシリアル変換ケーブルは、Windows OS であれば挿せば勝手にドライバーをインストールしてくれるか、販売メーカーサイトでドライバをダウンロードすることで使うことができる。
しかし、Mac OSX 用のドライバーが用意されているケースは少なく、ほぼ皆無と言ってよい。
ところが、変換チップを作っている海外メーカーのサイトでドライバーが配布されていたりするので、チップメーカーからOSX用のドライバーを探し出すことが出来たりする。

* cf.
 * http://kenkoi.blog60.fc2.com/blog-entry-13.html
 * http://weboo-returns.com/blog/corega-usb-serial-on-mac-os-x/

##### corega CG-USBRS232R ケーブル

##### 購入場所
* [Amazon価格](http://www.amazon.co.jp/dp/B000E6UWH6) ￥2,436- 2013/10/30現在
* [ヨドバシ価格](http://www.yodobashi.com/%E3%82%B3%E3%83%AC%E3%82%AC-COREGA-CG-USBRS232R-RS232C-%E3%82%B7%E3%83%AA%E3%82%A2%E3%83%AB9%E3%83%94%E3%83%B3-%E2%86%90%E2%86%92USB-%E5%A4%89%E6%8F%9B%E3%82%B1%E3%83%BC%E3%83%96%E3%83%AB/pd/100000001000694558/) ￥2,680- 2013/10/30現在

##### ドライバー入手
* Prolific から zip ファイルをダウンロード http://www.prolific.com.tw/US/ShowProduct.aspx?p_id=229&pcid=41
 * ZIPを展開して pkg ファイルを起動して自動でインストール/再起動
 * カーネル拡張設定ファイルの編集
 * コレガ製ケーブルの VenderID, ProductID が入っていないので追記します。
  * sudo vi /System/Library/Extensions/ProlificUsbSerial.kext/Contents/Info.plist
   * このファイルを編集するときには root 権限が必要なので、sudoコマンドで vi を実行して編集するのが良いでしょう。

* 
~~~
--- Info.plist.origin.txt	2013-10-30 12:00:36.000000000 +0900
+++ Info.plist.ProlificUsbSerial.kext.txt	2013-10-29 19:54:14.000000000 +0900
@@ -74,6 +74,23 @@
 			<key>idVendor</key>
 			<integer>1659</integer>
 		</dict>
+        	<key>07aa_002a</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>42</integer>
+                	<key>idVendor</key>
+                	<integer>1962</integer>
+        	</dict>
 	</dict>
 	<key>OSBundleLibraries</key>
 	<dict>
</code></pre>
~~~

* idVender と idProduct は
    * 「このMacについて」=> 「システム・レポート」からUSBの項を選んで、対象のUSBデバイスを選択すると、発見出来ます。
        * 製品ID 0x002a = 42
        * 製造元ID 0x07aa = 1962
    * ![スクリーンショット 2015-06-06 17.13.53.png](https://qiita-image-store.s3.amazonaws.com/0/47275/e3e59726-826b-22a3-fa99-0bf379640ca0.png)


#### カーネル拡張モジュールの再構築
カーネル拡張キャッシュの再構築が必要なので、kextディレクトリを更新して再起動させるとモジュールを読み直してくれる。
ただし、kext内の設定情報を書き換えてしまっているので、Yosemiteが管理しているベンダーシグネチャと差異があるため、モジュールのロードが出来なくなってしまう。
シグネチャを作り直せれば良いのだが、それも出来ないので、おすすめしないがカーネル起動時のオプションでシグネチャチェックを無視する開発用モードでOSを起動するようにする。

* 
~~~
$ sudo touch /System/Library/Extensions
$ sudo nvram boot-args="debug=0x146 kext-dev-mode=1"
$ sudo reboot
~~~

* See. http://kangaetakoto.blogspot.jp/2013/05/how-to-rebuild-kext-cache-on-mountain.html
 * kextcache コマンドは使わない方が良さそうです。

#### 使い方
* 標準のターミナル、もしくはターミナルアプリ iTerm2 などから screen コマンドでシリアル経由でのターミナル接続が可能になります。
 * *screen /dev/tty.usbserial 9600*  << 数字の部分は通信速度なので接続機器によって異なります。
 * Catalyst 2960 の例

~~~
$ screen /dev/tty.usbserial 9600
cat-2960>sh run
              ^
% Invalid input detected at '^' marker.

cat-2960>en
cat-2960#sh run
Building configuration...

Current configuration : 6015 bytes
!
version 12.2
no service pad
service timestamps debug datetime msec
service timestamps log datetime msec
service password-encryption
!
hostname cat-2960

Ctrl-A, Ctrl-\ (接続を終了するかどうか y/n で尋ねられるので yキー で切断される)
~~~