macsbug

Just another WordPress.com site

CH340 kernel crash memorandum

with 2 comments

USB to serial chip CH340 は マックで カーネルクラッシュ を起こす。      2016.11.30

最新では CH340ドライバー 「CH34x_Install_V1.3.pkg」をインストールし
動作しているのが正常です。しかし私の場合 それでは認識しませんでした。
つまり ver 1.1「ch34xInstall.pkg」や ver 1.3「CH34x_Install_V1.3.pkg」を
インストールできないという不可解な現象。
私だけの現象かも知れませんが その解決方法を備忘録としました。

解決方法:古い  CH340ドライバー (2012.10.15) (左) を インストール後に
_    新しい CH340ドライバー (2013.12.25) (右) を インストールする。


 

使用環境:
iMac 27 Mid 2010 OS X 10.8.5 Mountain Lion。 Arduino IDE 1.6.13。


 

経緯:「とりあえず対策」で過ごす。
USB to serial chip CH340 を使用したモジュールは マックでカーネルクラッシュ
を起こす。原因不明の中で対策としてCH340を接続してからマックの電源を起動
すると CH340 を認識し使用するという恥ずかしい状態。
ところが 最近になり これも効かずカーネルクラッシュの嵐が発生しました。

過去にこの経緯から「CH340G USB Serial Module in OSX」を記載しましたが
解決はしていませんでした。

原因と思われる「usb.kext」をターミナルで削除するとカーネルクラッシュは
無くなりましたが 以下の2つのバージョンをインストールしても
「全く認識しない」という 悲惨な状態になりました。
_  CH341SER_MAC 2013年12月25日 「ch34xInstall.pkg」
_  CH341SER_MAC 2016年8月16日  「CH34x_Install_V1.3.pkg」


 

原因:
1. カーネルクラッシュの原因は usb.kext である。
_  場所は System/Library/Extensions/usb.kext にある。


 

対策:以下の3つ( usb.kext 削除, OLD Driver, New Driver Install ) を実施します。
1. usb.kext を削除する。
_  usb.kext を直接ゴミ箱へ捨てるか ターミナルを使用しコマンドを実行します。
_  sudo rm -rf /System/Library/Extensions/usb.kext
_  これにより System/Library/Extensions/ の中の usb.kext は無くなります。
_  マックを再起動します。

2. 古いドライバー「USB CH341/CH340 MAC OS32, MAC OS64」を入手する。
_  Модуль: CH340G にある USB CH341/CH340 MAC OS32, MAC OS64 を DL する。
_  確認:DLファイルの中にある ch34xInstall.pkg の日付は 2012.10.15 である。
_  ch34xInstall.pkg でインストールする。
_  System/Library/Extensions/ に usb.kext ができ ver は 1.1 です。
_   
_   
_  マックを再起動します。
_  Arduino IDE のシリアルポートは 「/dev/cu.wch ch341 USB=>RS232 fd1420」となる。
_ 
_  ただし この状態では Arduine IDE は コンパイルエラーがでます。

3. 新しいドライバー「CH341SER_MAC.ZIP」を入手する。
_  How To Use Cheap Chinese,,,Ch340G Serial/USB chip にある
_  CH341SER_MAC.ZIP を DL する。
_  確認:DLファイルの中にある ch34xInstall.pkg の日付は 2013.12.25 である。
_  ch34xInstall.pkg でインストールする。
_  System/Library/Extensions/ に usb.kext があり ver は 1.1.1 です。
_   
_   
_  マックを再起動します。
_  Arduino IDE のシリアルポートは 「/dev/cu.wchusbserialfd1420」となる。
_ 
結論:
_  マックの電源オン状態で CH340 を接続してもカーネルクラッシュは起きず
_  コンパイルも正常に行われる様になりました。


 

システムレポート:システムレポートによる USBの状態 は以下です。
_ 左:CH340:確かに名前の無いチープなUSBです。 右:CP2102。


CH340 を認識しない場合のハード的回避方法:CP2102 を介して読み書きする。

1. ESP-01 に書き込む方法:
_  nodeMCU Board の CP2102 を使用する。(nodeMCUは ebayで380円です)
_  NodeMCU のEN端子(青矢印)を GND に接続し nodeMCUを停止する。
_  Arduino IDE: “Generic ESP8266 Module” を選択し
_        Reset Method : “nodemcu” にする。

 nodeMCU  ESP-01  OLED
 EN = GND  –  –
 RX  RX  –
 TX  TX  –
 RST  RST  –
 D3(0)  GOPI 0  –
 3V3  CH_PD  SDA
 –  GPIO 2  SCL
 GND  GND  GND
 3V3  VCC  VCC


 

2. WeMos D1 mini に書き込む方法:
_  nodeMCU Board の CP2102 を使用する。
_  NodeMCU のEN端子(青矢印)を GND に接続し nodeMCUを停止する。
_  D1 mni CH340 の Pin 8 – 9 を Jumper ( Short ) し CH340 を停止する。
_   ( D1 mini X1:CH340 の X’tal を停止する為です)
_  Arduino IDE ツールの設定:”WeMos D1 R1 R2 & mini” を選択する。

 nodeMCU  D1 mini  OLED
 EN = GND  –  –
 –  CH340
pin 8 – 9 Short
 –
 RX  RX  –
 TX  TX  –
 RST  RST  –
 D3(0)  D3(GPIO 0)  SDA
 –  D2(GPIO 2)  SCL
 GND  GND  GND
 3V3  VCC  VCC

 

感想:CH340 は チープで 何かと疲れるチップです。
カーネルクラッシュの経緯:OSはSnowleopard の時は問題なく「/dev/cu.wchusbserialfd1420」
_ で使用できていました。OSをMountain Lion後に 徐々にカーネルクラッシュが起き始める。
.
認証:最近 safariブラウザーで幾つかのサイトにアクセスできなくなりました。
_ 代表的なものは Processing のサイトでこれが繋がらない為 極めて不便。(Sierra OSはOK)
_ たぶん Safari ブラウザーは セキュリティー機能強化の為だと思っています。
_ とりあえずは Google Chrome でしのいでいます。たぶん機能が甘いからかも知れません。
_ この問題は どうやらセキュリティーアップデートの件でアップルでの認証期限が切れた
_ 件の現象だと思っています。他にも時折「認証」文字がでてくる事が多くなりました。
_ これらは OSのバージョン と ブラウザー の組み合わせによるものと思われます。
.
CH340 搭載モジュール:カーネルクラッシュの場合 WeMos D1 mini や CH340 タイプの
_ nodeMCU は使用できなくなります。特に今まで作成した物が変更できなくなる事態。
_ OTA書き込み方法もあると思いますが USB接続が必要となる場面も多々あります。
_ この中国産の怪しいチップは本当にチープに感じます。安いですが手間がかかり
_ 困ります。それで最近は少し高くても CP2102製品 を購入しています。
_ ま〜 何はともあれ 解決してホットしました。
.
CH340 ドライバー:3つのバージョンがある。
_  v 1.1     :CH341SER_MAC  2012年10月15日 「ch34xInstall.pkg」
_  v 1.1.1  :CH341SER_MAC  2013年12月25日 「ch34xInstall.pkg」
_  v 1.3    :CH341SER_MAC  2016年  8月16日  「CH34x_Install_V1.3.pkg」
_  新しいバージョンとして「CH34x_Install_V1.3.pkg」があるが これを実行しても
_  CH340 を認識しませんでした。
_  OS X Yosemite や EI Captain での対応も必要らしい。
.
_  友人の情報では「CH34x_Install_V1.3.pkg」で問題なく動いているとの事。
_  私の場合 v 1.1 は インストールできるが v 1.1.1 はその後にタマにインストールできる。
_  そして v 1.3 は どうやってもインストールできない状態。
_  インストーラーが何故インストールできないのかは不明。
.
USBシリアル変換モジュール:秋葉で1000円位する物があり 結構高い製品だと感じました。
_ CP2102 の NodeMCU なら 300円台で買えますからね。
.
ネット情報:多くの記事がありますが 私の様な状況を一気に解決する記事は見受けられ
_ ませんでした。それは 恐らく一部の条件を前提に解決していたと思われます。
.
疑問:CH340 のドライバーは何処に入ったのでしょうか? usb.kext とも思われます。
_  usb.kext を削除しても CP2102 は動作しています。そうなるとCP2102 ドライバー
_  は どういう名前で何処に入っているのでしょうか?
_  他、過去に使用した USB の名前が残っており 消したいのですが 方法が解りません。
_

 

Written by macsbug

11月 30, 2016 @ 2:22 am

カテゴリー: Arduino, ESP8266

コメント / トラックバック2件

Subscribe to comments with RSS.

  1. すごくよく調べられていますね。Macって調べ方がよくわからないので、CH340はOS X El Capitanにアップデートしてから使えなくなってしまいました。別物ですが、FTDIのチップが載っているタイプに乗り換えました。

    あや (@masashi_214)

    12月 4, 2016 at 1:45 pm

    • あやさん、サイトへの訪問ありがとうございます。
      お返事が遅れましたが EI Capitan は普段使用していないのですが 試してみました。
      確かに認識しません。
      ところが 妙な方法で 認識して書込みができました。
      それで ブログに まとめましたので 見て頂ければ幸いです。
      CH340 with EI Caption
      https://macsbug.wordpress.com/2016/12/05/ch340-with-ei-caption/
      言われる様に「乗り換え」の言葉を聞いて背中を押されました。
      即 CH340 以外のモジュールを 沢山発注しました。

      macsbug

      12月 5, 2016 at 11:42 am


コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。