**FreeBSD で認識するかどうか条件によって変わる問題 [#cff63cc8]
-PC:DELL Inspiron910
-先に挿すと認識しないケースでは LED2 が点かない(main が実行できない)場合と点く場合がある

-OS: FreeBSD-10.2, ファーム v.28
--本体の USB 端子に挿すと認識しない(USB_ERR_TIMEOUT)
--ダイソーの USB1.0 2ポートハブでは認識するが、ハブにデバイスを先に挿しておくと認識しない
--ELECOM USB1.0 4ポートハブでは全く認識しない
--USB2.0 ハブ経由では認識するが、COLOR(RED){ハブにデバイスを先に挿しておくと認識しない}(USB_ERR_STALLED)

-OS: FreeBSD-10.2, ファーム v.28(ブートローダなし+250ms版)
--本体の USB 端子に挿すと認識COLOR(RED){する}
--ダイソーの USB1.0 2ポートハブでは認識するが、ハブにデバイスを先に挿しておくと認識しない, COLOR(BLUE){LED2点く}
--ELECOM USB1.0 4ポートハブでは全く認識しない(USB_ERROR_IOERROR)
--USB2.0 ハブ経由では認識するが、COLOR(RED){ハブにデバイスを先に挿しておくと認識しない}

-OS: FreeBSD-10.2, ファーム v.28(ブートローダなし+1000ms+250ms版)
--本体の USB 端子に挿すと認識COLOR(RED){する}
--ダイソーの USB1.0 2ポートハブでCOLOR(RED){ハブにデバイスを先に挿しても認識する}
--ELECOM USB1.0 4ポートハブでは全く認識しない

-OS: FreeBSD-10.2, ファーム v.28(1000ms+250ms版)
--本体の USB 端子に挿すと認識しない(USB_ERR_TIMEOUT)
--ダイソーの USB1.0 2ポートハブでは認識するが、ハブにデバイスを先に挿しておくと認識しない(USB_ERR_STALLED) COLOR(BLUE){LED2付かない)
--USB2.0 ハブ経由では認識するが、COLOR(RED){ハブにデバイスを先に挿しておくと認識しない}(USB_ERR_STALLED), COLOR(BLUE){LED2点かない}

-OS Knoppix7.4, ファーム v.28(ブートローダなし+250ms版)
--本体の USB 端子に挿すと認識COLOR(RED){する}
--ダイソーの USB1.0 2ポートハブにデバイスを先に挿しても認識COLOR(RED){する}
--ELECOM USB1.0 4ポートハブでは全く認識しない
--USB2.0 ハブ経由では先に挿しておいても認識する

-OS Windows10, ファーム v.28(ブートローダなし版)
--ELECOM USB1.0 4ポートハブで先に挿しても認識する

***結果 [#xa161ee5]
-FreeBSD-10.2
|-|ブートローダあり|ブートローダなし,250ms|ブートローダなし,1000+250ms|エラー|
|USB2ハブ|○|○|(○)|-|
|USB1ハブ(ダイソー)|○|○|○|-|
|USBハブなし|×|○|○|USB_ERR_TIMEOUT|
|USB1ハブ,USB2ハブ(※1)|×|×|(○)|USB_ERR_STALLED|
|USB1ハブ(ELECOM)|×|×|×|USB_ERR_IOERROR|
(※1): ハブにデバイスを挿してから、PC にハブを挿した

 [エラーメッセージ(USB_ERR_TIMEOUTT)]
 Dec 12 03:03:26 milk kernel: usbus4: port reset timeout
 Dec 12 03:03:26 milk kernel:
 uhub_reattach_port: port 3 reset failed, error=USB_ERR_TIMEOUT
 Dec 12 03:03:26 milk kernel: uhub_reattach_port:
 device problem (USB_ERR_TIMEOUT), disabling port 3

 [エラーメッセージ(USB_ERR_STALLE)]
 Dec 12 03:43:28 milk kernel:
 usb_alloc_device: set address 3 failed (USB_ERR_STALLED, ignored)
 Dec 12 03:43:30 milk kernel:
 usbd_setup_device_desc: getting device descriptor at addr 3 failed,
 USB_ERR_STALLED
 Dec 12 03:43:30 milk kernel:
 usbd_req_re_enumerate: addr=3, set address failed! (USB_ERR_STALLED, ignored)

 [エラーメッセージ(USB_ERR_IOERROR)]
 Dec 12 20:52:49 milk kernel:
 usb_alloc_device: set address 4 failed (USB_ERR_IOERROR, ignored)
 Dec 12 20:52:51 milk kernel:
 usbd_setup_device_desc:getting device descriptor at addr 4 failed,
 USB_ERR_IOERROR
 Dec 12 20:52:51 milk kernel:
 usbd_req_re_enumerate: addr=4, set address failed! (USB_ERR_IOERROR, ignored)

- Knoppix7.4
|-|ブートローダなし,250ms|エラー|
|USB2ハブ|○|-|
|USB1ハブ(ダイソー)|○|-|
|USBハブなし|○|-|
|USB1ハブ,USB2ハブ(※1)|○|-|
|USB1ハブ(ELECOM)|×|IO|
(※1): ハブにデバイスを挿してから、PC にハブを挿した

-Windows10
|-|ブートローダなし|エラー|
|USB2ハブ|○|-|
|USB1ハブ(ダイソー)|○|-|
|USBハブなし|○|-|
|USB1ハブ,USB2ハブ(※)|○|-|
|USB1ハブ(ELECOM)|○|-|

***改良 [#rc54ca23]
-ブートローダなし版を作成(Digispark としては使えなくなるが、FreeBSD に直接挿したときの認識率が改善する)
--従来 micronucleus(DigiSpark 用 USB 経由のライタ) で書き込んでいたファームウェア(HEX ファイル)と全く同じコードを、Digispark の Flash の 0番地から AVR ライタで直接書き込む
-起動時に 1000+250ms ウェイトを入れる(FreeBSD でハブにあらかじめ挿してあったデバイスの認識率が改善する)
--V-USB の初期化ルーチン(http://vusb.wikidot.com/examples)(http://vusb.wikidot.com/examples) に *1 の行を追加
 usbInit(); // *1
 uchar j=0; // *1
 while(--j){ _delay_ms(4); } // *1
 
 usbDeviceDisconnect();
 uchar i = 0;
 while(--i){         // fake USB disconnect for > 250 ms
     // wdt_reset();    // if watchdog is active, reset it
     _delay_ms(1);   // library call -- has limited range
 }
 usbDeviceConnect();

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS