(仮)釣りと電子工作 jumper EZbook2でpickit2が使えない件 忍者ブログ
趣味の電子工作と釣りについて。電子工作は、おもに変換器作成。釣りはおもにトラウトの管釣り。
[407] [406] [405] [404] [403] [402] [401] [400] [399] [398] [397]
出先でちょっとPIC焼きたいなあ、というときのため(だけではないが)に買った激安FHD液晶ノートPC、EZbook2であるが、pickit2が使えない。pickit3はMPLABからであれば焼けるがPICkit3 Programmerからは焼けない。どちらも、PICkit 2 not found. Check USB connections and use Tools->Check Communication to retry. のようなメッセージが表示される。

Windows10(64bit)はダメなのか??そんなことねーよな??どうしよう、、、MikroCで作ったHEXを焼くためだけにMPLABのプロジェクト化しないといけないのか???

ということで、いろいろ調べてみた。

pickit2はVID:04D8、PID:0033なので、ここらへんからDevice ManagerのHuman Interface Devicesを見ていくと、該当するUSB Input DeviceにDevice not migrated (デバイスは移行されませんでした。) のエラーが発生していた。イベントビュアにもERROR 441( Device .... could not be migrated)が記録されている。でも、なぜか、This device is working properly.(このデバイスは正常に動作しています。)なのだ。これが原因かどうかは判らないが、疑わしい、ということで、この解決方法を調査した。

。。。。どこにも回答がない。だれも解決できていない????


ということで、俺的解決方法を備忘メモとして残しておく。


まずは、以下の情報が表示されているとする。


デバイス USB\VID_04D8&PID_0033\5&28e25a0d&0&1 を移行できませんでした。
最後のデバイス インスタンス ID: USB\VID_04B4&PID_6022\5&28E25A0D&0&1
クラス GUID: {79046022-7904-7904-1980-198007056022}
場所のパス: PCIROOT(0)#PCI(1400)#USBROOT(0)#USB(1)
移行ランク: 0xF000FFFFFFFF0023
存在: false
状態: 0xC0000719

で、これが出た場合、悪いのは04D8:0033のpickit2ではなく、 04B4:6022なのだ。よって、この場合は04B4:6022のデバイスを消せばいいのだが、デバイスマネージャで探しても見つからない。よってregeditで該当レジストリを消す。

具体的には、下記のレジストリを消せばいい。(ControlSet001の001は002などかもしれない)

[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\DeviceMigration
\Devices\USB\VID_04B4&PID_6022]

これを消したら、次はまた別の原因でDevice not migratedエラーが出るかもしれないが、エラーが出なくなるまで繰り返すべし、と。

さてと、これでpickit2使えるかな。。。。。

!!!???

使えない!何も変わらない!!残念!!
Device not migratedは犯人じゃ無かった!!冤罪でした。

悔しいです!!

あまりに悔しいので、気合入れて20時間ぐらい調べて、ようやく原因が判明した。

まず、EZbook2でPICkit2が使えない原因であるが、これはWindows10でも64bitでもなく、このPCが大量のHIDインターフェース機器を内蔵しているからである。

こんな感じ。




で、なぜ大量だとダメかというと、PICkit2 programmerはHIDデバイス20個までしか対応していないから。もし21個HIDデバイスがあって、その21個目がpickit2だとすると、残念ながらPICkit2 programmer は、pickit2を発見することができない。

対処方法は、ただ一つ。ソースコードを書き換えてビルドする。

ソースコードはMicrochipのサイトからダウンロードできる。ビルドはVisualStudio Community版(無償)でOK

修正箇所はUSB.csの
            for (int l_loop = 0; l_loop < 20; l_loop++)

というところ。まあ、次のように、200個くらいにすれば、まず大丈夫だろう。
            for (int l_loop = 0; l_loop < 200; l_loop++)

ちなみに、大きくし過ぎると、アプリが起動しなくなるので、ほどほどに。

一応、こんな感じでビルドしたものを下記に置いときます(当然無保証)。こんなものでよければご自由にどうぞ。

Tuning Factory UNTRUST download site




PR
この記事にコメントする
お名前
タイトル
文字色
URL
コメント
パスワード Vodafone絵文字 i-mode絵文字 Ezweb絵文字
起動しました
ありがとうございました。
無事に起動しました。
Win10では動くPCと動かないPCがあると載っていましたが、このページがもっと上にくるといいですね。
NONAME 2018/03/12(Mon) 編集
Re:起動しました
>ありがとうございました。
>無事に起動しました。
>Win10では動くPCと動かないPCがあると載っていましたが、このページがもっと上にくるといいですね。

お役に立てて、なによりです。
あまり参照されることのないページなので、検索に引っ掛かりにくいようです。
 【2018/03/12】
カレンダー
06 2018/07 08
S M T W T F S
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
リンク
最新CM
[03/12 NONAME]
[07/09 こいち]
[07/07 こいち]
[07/05 NONAME]
[07/04 NONAME]
最新TB
バーコード
ブログ内検索
カウンター
Powered by ニンジャブログ  Designed by 穂高
Copyright © (仮)釣りと電子工作 All Rights Reserved
忍者ブログ / [PR]