I have a D-Link DWA-140 USB Wi-Fi device which is rt2800 based (5392 chipset). I'm trying to use it on a BeagleBone Black based system with 3.14.x kernel built with Yocto. We're using ConnMan 1.30 at the moment.
We've been finding some instabilities with it periodically disconnecting from some networks. So we tried upgrading the firmware file rt2870.bin from version 0.29 to 0.36. That seems to be more stable with the network. However, we're finding that it initially doesn't connect, until the Wi-Fi has been disabled and then re-enabled. 'connmanctl scan wifi' and 'iwlist scan' don't return anything until Wi-Fi has been disabled and then re-enabled.
Have there been any Linux driver changes needed to support this 0.36 firmware? Does anyone have any pointers on where to look to understand this behaviour between 0.29 and 0.36 firmware?
--
Craig McQueen
WG9zZSBWYXpxdWV6IFBlcmV6IHdyb3RlOg0KPiBDcmFpZyBNY1F1ZWVuIHdyb3RlOg0KPiANCj4g
PiBJIGhhdmUgYSBELUxpbmsgRFdBLTE0MCBVU0IgV2ktRmkgZGV2aWNlIHdoaWNoIGlzIHJ0Mjgw
MCBiYXNlZCAoNTM5Mg0KPiA+IGNoaXBzZXQpLiBJJ20gdHJ5aW5nIHRvIHVzZSBpdCBvbiBhIEJl
YWdsZUJvbmUgQmxhY2sgYmFzZWQgc3lzdGVtIHdpdGgNCj4gPiAzLjE0Lngga2VybmVsIGJ1aWx0
IHdpdGggWW9jdG8uIFdlJ3JlIHVzaW5nIENvbm5NYW4gMS4zMCBhdCB0aGUgbW9tZW50Lg0KPiAN
Cj4gVHJ5IGl0IHdpdGggYSBfZGVza3RvcCB4ODZfNjQgZGlzdHJpYnV0aW9uXyAsIHdpdGggYSAq
cmVjZW50IGtlcm5lbCogYXMNCj4gRmVkb3JhOiAoV09SSyBpcyBnbm9tZSkgaHR0cHM6Ly9hbHQu
ZmVkb3JhcHJvamVjdC5vcmcvcHViL2FsdC9saXZlLXJlc3BpbnMvDQoNCkhtbSwgdGhhdCBpcyBu
b24tdHJpdmlhbCBidXQgSSBtYXkgdHJ5IGl0Lg0KDQpGb3Igbm93LCBJJ2xsIGFsc28gdHJ5IGEg
NC40LjYga2VybmVsIHJ1bm5pbmcgb24gYSBCZWFnbGVCb25lIEJsYWNrICh3aXRoIGEgVVNCIGh1
YiB0byB3b3JrIGFyb3VuZCBhbm90aGVyIGlzc3VlIHdpdGggdGhlIHJ0MjgwMHVzYiBkcml2ZXIg
Y3Jhc2hpbmcgYXMgZGVzY3JpYmVkIGluIGFub3RoZXIgZS1tYWlsKS4NCg0KPiA+IFdlJ3ZlIGJl
ZW4gZmluZGluZyBzb21lIGluc3RhYmlsaXRpZXMgd2l0aCBpdCBwZXJpb2RpY2FsbHkNCj4gPiBk
aXNjb25uZWN0aW5nIGZyb20gc29tZSBuZXR3b3Jrcy4gU28gd2UgdHJpZWQgdXBncmFkaW5nIHRo
ZSBmaXJtd2FyZQ0KPiA+IGZpbGUgcnQyODcwLmJpbiBmcm9tIHZlcnNpb24gMC4yOSB0byAwLjM2
LiBUaGF0IHNlZW1zIHRvIGJlIG1vcmUNCj4gPiBzdGFibGUgd2l0aCB0aGUgbmV0d29yay4gSG93
ZXZlciwgd2UncmUgZmluZGluZyB0aGF0IGl0IGluaXRpYWxseQ0KPiA+IGRvZXNuJ3QgY29ubmVj
dCwgdW50aWwgdGhlIFdpLUZpIGhhcyBiZWVuIGRpc2FibGVkIGFuZCB0aGVuIHJlLWVuYWJsZWQu
ICcNCj4gc2NhbiB3aWZpJw0KPiA+IGFuZCAnaXdsaXN0IHNjYW4nIGRvbid0IHJldHVybiBhbnl0
aGluZyB1bnRpbCBXaS1GaSBoYXMgYmVlbiBkaXNhYmxlZA0KPiA+IGFuZCB0aGVuIHJlLWVuYWJs
ZWQuDQo+IA0KPiBEb24ndCB1c2UgYW55IHdyYXBwZXIoTk0sIENvbm5NYW4sIHdpY2QsIC4uLiks
IHVzdWFsbHkgYXJlIGJ1Z2d5LiBZb3UNCj4gc2hvdWxkIHVzZSByYXcgY29tbWFuZHMgIml3IiBh
bmQgIndwYV9zdXBwbGljYW50Ii4gSGludHM6DQo+IGh0dHBzOi8vd2lyZWxlc3Mud2lraS5rZXJu
ZWwub3JnL2VuL3VzZXJzL2RvY3VtZW50YXRpb24vaXcgYW5kDQo+IHdwYV9zdXBwbGljYW50IGFs
d2F5cyBydW5uaW5nIHdpdGggIi1Ebmw4MDIxMSINCg0KT2theSwgSSd2ZSBzdHJpcHBlZCBkb3du
IHRoZSBzeXN0ZW0gc28gQ29ubk1hbiwgdWRldiBydWxlcyBhcmVuJ3QgcnVubmluZy4NCg0KT24g
YWxsIHN5c3RlbXMsIGFmdGVyIHBsdWdnaW5nIGluIHRoZSBkZXZpY2UsIEkgaGF2ZSB0byBpc3N1
ZToNCg0KICAgIGlwIGxpbmsgc2V0IHdsYW4wIHVwDQoNCkFmdGVyIHRoaXMsIEkgdHJ5IHRvIGRv
IGEgc2NhbjoNCg0KICAgIGl3IGRldiB3bGFuMCBzY2FuDQoNCk9uIGtlcm5lbCA0LjQuNiwgd2l0
aCBmaXJtd2FyZSAwLjM2LCBpdCB3b3JrcyBmaW5lIChsaXN0cyBBUHMgaXQgZmluZHMpLiBPbiBr
ZXJuZWwgMy4xNC54LCB3aXRoIGZpcm13YXJlIDAuMjksIGl0IHdvcmtzIGZpbmUuIEJ1dCBvbiBr
ZXJuZWwgMy4xNC54LCB3aXRoIGZpcm13YXJlIDAuMzYsIGl0IHJldHVybnMgbm90aGluZy4gQnV0
IHRoZW4sIGlmIEkgZG8gdGhpczoNCg0KICAgIGlwIGxpbmsgc2V0IHdsYW4wIGRvd24NCiAgICBp
cCBsaW5rIHNldCB3bGFuMCB1cA0KICAgIGl3IGRldiB3bGFuMCBzY2FuDQoNClRoZW4gaXQgd29y
a3MgZmluZS4NCg0KU28sIHRoZSBxdWVzdGlvbiBpcywgd2h5IGRvZXMgZmlybXdhcmUgMC4zNiB3
aXRoIGtlcm5lbCAzLjE0Lnggbm90IHdvcmsgdW50aWwgSSd2ZSBtYWRlIHRoZSBpbnRlcmZhY2Ug
Z28gdXAsIHRoZW4gZG93biwgYW5kIHRoZW4gdXAgYWdhaW4/DQoNCj4gPiBIYXZlIHRoZXJlIGJl
ZW4gYW55IExpbnV4IGRyaXZlciBjaGFuZ2VzIG5lZWRlZCB0byBzdXBwb3J0IHRoaXMgMC4zNg0K
PiA+IGZpcm13YXJlPyBEb2VzIGFueW9uZSBoYXZlIGFueSBwb2ludGVycyBvbiB3aGVyZSB0byBs
b29rIHRvIHVuZGVyc3RhbmQNCj4gPiB0aGlzIGJlaGF2aW91ciBiZXR3ZWVuIDAuMjkgYW5kIDAu
MzYgZmlybXdhcmU/DQo+IA0KPiBjbG9zZWQgc291cmNlLCBidXQgb2xkIGNoYW5nZWxvZ3MgYXJl
IGF2YWlsYWJsZSBhdDoNCj4gaHR0cDovL3J0MngwMC5zZXJpYWxtb25rZXkuY29tL3BpcGVybWFp
bC91c2Vyc19ydDJ4MDAuc2VyaWFsbW9ua2V5LmNvbS8NCj4gMjAxMy1TZXB0ZW1iZXIvMDA2Mzkx
Lmh0bWwNCj4gDQo+IFJlbGF0ZWQgdG8gbGF0ZXN0IGZpcm13YXJlIHJlbGVhc2VzLCByYWxpbmsv
bWVkaWF0ZWsgZ3V5cyBzYXk6DQo+ICJBY2NvcmRpbmcgdG8gdGhlIGVuZ2luZWVycyBjb21tZW50
LCB0aGUgZmlybXdhcmUgZGlkbid0IGNoYW5nZSBtdWNoDQo+IHRoZXNlIHllYXJzLCBqdXN0IHNv
bWUgYmJwIHJlZ2lzdGVyIHVwZGF0ZSBhbmQgbGVkIHN0dWZmLiINCg0KLS0gDQpDcmFpZyBNY1F1
ZWVuDQoNCg==
Craig McQueen wrote:
> I have a D-Link DWA-140 USB Wi-Fi device which is rt2800 based (5392
> chipset). I'm trying to use it on a BeagleBone Black based system with
> 3.14.x kernel built with Yocto. We're using ConnMan 1.30 at the moment.
Try it with a _desktop x86_64 distribution_ , with a *recent kernel*
as Fedora: (WORK is gnome) https://alt.fedoraproject.org/pub/alt/live-respins/
> We've been finding some instabilities with it periodically disconnecting
> from some networks. So we tried upgrading the firmware file rt2870.bin
> from version 0.29 to 0.36. That seems to be more stable with the
> network. However, we're finding that it initially doesn't connect, until
> the Wi-Fi has been disabled and then re-enabled. ' scan wifi'
> and 'iwlist scan' don't return anything until Wi-Fi has been disabled
> and then re-enabled.
Don't use any wrapper(NM, ConnMan, wicd, ...), usually are buggy. You should
use raw commands "iw" and "wpa_supplicant". Hints:
https://wireless.wiki.kernel.org/en/users/documentation/iw and wpa_supplicant
always running with "-Dnl80211"
> Have there been any Linux driver changes needed to support this 0.36
> firmware? Does anyone have any pointers on where to look to understand
> this behaviour between 0.29 and 0.36 firmware?
closed source, but old changelogs are available at:
http://rt2x00.serialmonkey.com/pipermail/users_rt2x00.serialmonkey.com/2013-September/006391.html
Related to latest firmware releases, ralink/mediatek guys say:
"According to the engineers comment, the firmware didn't change much
these years, just some bbp register update and led stuff."
SSB3cm90ZToNCj4gSSB3cm90ZToNCj4gPiBJIHdyb3RlOg0KPiA+ID4gWG9zZSBWYXpxdWV6IFBl
cmV6IHdyb3RlOg0KPiA+ID4gPiBDcmFpZyBNY1F1ZWVuIHdyb3RlOg0KPiA+ID4gPg0KPiA+ID4g
PiA+IEkgaGF2ZSBhIEQtTGluayBEV0EtMTQwIFVTQiBXaS1GaSBkZXZpY2Ugd2hpY2ggaXMgcnQy
ODAwIGJhc2VkDQo+ID4gPiA+ID4gKDUzOTIgY2hpcHNldCkuIEknbSB0cnlpbmcgdG8gdXNlIGl0
IG9uIGEgQmVhZ2xlQm9uZSBCbGFjayBiYXNlZA0KPiA+ID4gPiA+IHN5c3RlbSB3aXRoIDMuMTQu
eCBrZXJuZWwgYnVpbHQgd2l0aCBZb2N0by4gV2UncmUgdXNpbmcgQ29ubk1hbg0KPiA+ID4gPiA+
IDEuMzAgYXQgdGhlDQo+ID4gPiBtb21lbnQuDQo+ID4gPiA+DQo+ID4gPiA+IFRyeSBpdCB3aXRo
IGEgX2Rlc2t0b3AgeDg2XzY0IGRpc3RyaWJ1dGlvbl8gLCB3aXRoIGEgKnJlY2VudA0KPiA+ID4g
PiBrZXJuZWwqIGFzDQo+ID4gPiA+IEZlZG9yYTogKFdPUksgaXMgZ25vbWUpDQo+ID4gPiA+IGh0
dHBzOi8vYWx0LmZlZG9yYXByb2plY3Qub3JnL3B1Yi9hbHQvbGl2ZS1yZXNwaW5zLw0KPiA+ID4N
Cj4gPiA+IEhtbSwgdGhhdCBpcyBub24tdHJpdmlhbCBidXQgSSBtYXkgdHJ5IGl0Lg0KPiA+ID4N
Cj4gPiA+IEZvciBub3csIEknbGwgYWxzbyB0cnkgYSA0LjQuNiBrZXJuZWwgcnVubmluZyBvbiBh
IEJlYWdsZUJvbmUgQmxhY2sNCj4gPiA+ICh3aXRoIGEgVVNCIGh1YiB0byB3b3JrIGFyb3VuZCBh
bm90aGVyIGlzc3VlIHdpdGggdGhlIHJ0MjgwMHVzYg0KPiA+ID4gZHJpdmVyIGNyYXNoaW5nIGFz
IGRlc2NyaWJlZCBpbiBhbm90aGVyIGUtbWFpbCkuDQo+ID4gPg0KPiA+ID4gPiA+IFdlJ3ZlIGJl
ZW4gZmluZGluZyBzb21lIGluc3RhYmlsaXRpZXMgd2l0aCBpdCBwZXJpb2RpY2FsbHkNCj4gPiA+
ID4gPiBkaXNjb25uZWN0aW5nIGZyb20gc29tZSBuZXR3b3Jrcy4gU28gd2UgdHJpZWQgdXBncmFk
aW5nIHRoZQ0KPiA+ID4gPiA+IGZpcm13YXJlIGZpbGUgcnQyODcwLmJpbiBmcm9tIHZlcnNpb24g
MC4yOSB0byAwLjM2LiBUaGF0IHNlZW1zDQo+ID4gPiA+ID4gdG8gYmUgbW9yZSBzdGFibGUgd2l0
aCB0aGUgbmV0d29yay4gSG93ZXZlciwgd2UncmUgZmluZGluZyB0aGF0DQo+ID4gPiA+ID4gaXQg
aW5pdGlhbGx5IGRvZXNuJ3QgY29ubmVjdCwgdW50aWwgdGhlIFdpLUZpIGhhcyBiZWVuIGRpc2Fi
bGVkDQo+ID4gPiA+ID4gYW5kIHRoZW4gcmUtDQo+ID4gZW5hYmxlZC4gJw0KPiA+ID4gPiBzY2Fu
IHdpZmknDQo+ID4gPiA+ID4gYW5kICdpd2xpc3Qgc2NhbicgZG9uJ3QgcmV0dXJuIGFueXRoaW5n
IHVudGlsIFdpLUZpIGhhcyBiZWVuDQo+ID4gPiA+ID4gZGlzYWJsZWQgYW5kIHRoZW4gcmUtZW5h
YmxlZC4NCj4gPiA+ID4NCj4gPiA+ID4gRG9uJ3QgdXNlIGFueSB3cmFwcGVyKE5NLCBDb25uTWFu
LCB3aWNkLCAuLi4pLCB1c3VhbGx5IGFyZSBidWdneS4NCj4gPiA+ID4gWW91IHNob3VsZCB1c2Ug
cmF3IGNvbW1hbmRzICJpdyIgYW5kICJ3cGFfc3VwcGxpY2FudCIuIEhpbnRzOg0KPiA+ID4gPiBo
dHRwczovL3dpcmVsZXNzLndpa2kua2VybmVsLm9yZy9lbi91c2Vycy9kb2N1bWVudGF0aW9uL2l3
IGFuZA0KPiA+ID4gPiB3cGFfc3VwcGxpY2FudCBhbHdheXMgcnVubmluZyB3aXRoICItRG5sODAy
MTEiDQo+ID4gPg0KPiA+ID4gT2theSwgSSd2ZSBzdHJpcHBlZCBkb3duIHRoZSBzeXN0ZW0gc28g
Q29ubk1hbiwgdWRldiBydWxlcyBhcmVuJ3QNCj4gPiBydW5uaW5nLg0KPiA+ID4NCj4gPiA+IE9u
IGFsbCBzeXN0ZW1zLCBhZnRlciBwbHVnZ2luZyBpbiB0aGUgZGV2aWNlLCBJIGhhdmUgdG8gaXNz
dWU6DQo+ID4gPg0KPiA+ID4gICAgIGlwIGxpbmsgc2V0IHdsYW4wIHVwDQo+ID4gPg0KPiA+ID4g
QWZ0ZXIgdGhpcywgSSB0cnkgdG8gZG8gYSBzY2FuOg0KPiA+ID4NCj4gPiA+ICAgICBpdyBkZXYg
d2xhbjAgc2Nhbg0KPiA+ID4NCj4gPiA+IE9uIGtlcm5lbCA0LjQuNiwgd2l0aCBmaXJtd2FyZSAw
LjM2LCBpdCB3b3JrcyBmaW5lIChsaXN0cyBBUHMgaXQNCj4gPiA+IGZpbmRzKS4gT24ga2VybmVs
IDMuMTQueCwgd2l0aCBmaXJtd2FyZSAwLjI5LCBpdCB3b3JrcyBmaW5lLiBCdXQgb24NCj4gPiA+
IGtlcm5lbCAzLjE0LngsIHdpdGggZmlybXdhcmUgMC4zNiwgaXQgcmV0dXJucyBub3RoaW5nLiBC
dXQgdGhlbiwgaWYgSSBkbyB0aGlzOg0KPiA+ID4NCj4gPiA+ICAgICBpcCBsaW5rIHNldCB3bGFu
MCBkb3duDQo+ID4gPiAgICAgaXAgbGluayBzZXQgd2xhbjAgdXANCj4gPiA+ICAgICBpdyBkZXYg
d2xhbjAgc2Nhbg0KPiA+ID4NCj4gPiA+IFRoZW4gaXQgd29ya3MgZmluZS4NCj4gPiA+DQo+ID4g
PiBTbywgdGhlIHF1ZXN0aW9uIGlzLCB3aHkgZG9lcyBmaXJtd2FyZSAwLjM2IHdpdGgga2VybmVs
IDMuMTQueCBub3QNCj4gPiA+IHdvcmsgdW50aWwgSSd2ZSBtYWRlIHRoZSBpbnRlcmZhY2UgZ28g
dXAsIHRoZW4gZG93biwgYW5kIHRoZW4gdXAgYWdhaW4/DQo+ID4NCj4gPiBJJ3ZlIG1hbmFnZWQg
dG8gYnVpbGQsIHVzaW5nIFlvY3RvLCBrZXJuZWwgNC40LjEyIGZvciBCZWFnbGVCb25lLiBXaGVu
DQo+ID4gSSBydW4gaXQsIGl0IGhhcyB0aGUgc2FtZSBwcm9ibGVtLiBUaGF0J3MgZGlmZmVyZW50
IGZyb20gdGhlIFVidW50dQ0KPiA+IDE2LjA0IGZvciBCZWFnbGVCb25lIHVzaW5nIDQuNC42IGtl
cm5lbC4NCj4gPg0KPiA+IFdpdGggbXkgWW9jdG8gYnVpbGQsIGl0IGhhZCBhIGRpZmZlcmVudCB2
ZXJzaW9uIG9mIHRoZSAnaXAnIGFuZCAnaXcnDQo+IGNvbW1hbmRzLg0KPiA+IFNvIEkgdHJpZWQg
Y29weWluZyB0aGUgVWJ1bnR1IHZlcnNpb25zLCBidXQgdGhhdCBkaWRuJ3QgbWFrZSBhDQo+ID4g
ZGlmZmVyZW5jZS4gSSB0cmllZCB1c2luZyB0aGUgWW9jdG8gYnVpbHQgNC40LjEyIGtlcm5lbCB3
aXRoIHRoZQ0KPiA+IFVidW50dSByb290IGZpbGVzeXN0ZW0sIGJ1dCBpdCBoYWx0ZWQgZHVyaW5n
IHRoZSBib290IHByb2Nlc3MgKGRvbid0DQo+ID4ga25vdyB3aHkpLiBNeSBiZXN0IGd1ZXNzIGlz
IHRoYXQgdGhlcmUncyBzb21lIGtlcm5lbCBjb25maWcgZGlmZmVyZW5jZQ0KPiA+IHRoYXQgbWFr
ZXMgYSBkaWZmZXJlbmNlLCBidXQgdGhlcmUgYXJlIG1hbnkgZGlmZmVyZW5jZXMsIHNvIEknbSBu
b3Qgc3VyZQ0KPiB3aGljaCBvbmUgaXQgbWlnaHQgYmUuDQo+ID4NCj4gPiBJJ20gbm90IHN1cmUg
YXQgdGhpcyBwb2ludCBob3cgdG8gbmFycm93IGl0IGRvd24gdG8gdGhlIHJvb3QgY2F1c2UuDQo+
ID4gQW55IGFkdmljZT8NCj4gPg0KPiA+IEkgd29uZGVyIGlmIG1heWJlIHRoZXJlJ3MgYSByYWNl
IGNvbmRpdGlvbiBpbiB0aGUgcnQyODAwdXNiIGRyaXZlcg0KPiA+IGJldHdlZW4gbG9hZGluZyB0
aGUgcnQyODcwLmJpbiBmaXJtd2FyZSBhbmQgZG9pbmcgdGhlIGludGVyZmFjZS11cA0KPiBpbml0
aWFsaXNhdGlvbi4NCj4gPiBOb3JtYWxseSB0aGUgZmlybXdhcmUgbG9hZHMgYXQgdGhlIHBvaW50
IG9mIGRvaW5nIHRoZSAnaXcgbGluayBzZXQgd2xhbjAgdXAnDQo+ID4gY29tbWFuZC4gSXMgdGhl
cmUgYSB3YXkgdG8gZm9yY2UgdGhlIGZpcm13YXJlIHRvIGxvYWQgYmVmb3JlIHRoYXQNCj4gPiBj
b21tYW5kPw0KPiANCj4gSSd2ZSBnb3QgdHdvIHJ0MjgwMCBkZXZpY2VzOg0KPiANCj4gKiBELUxp
bmsgRFdBLTE0MCB3aXRoIFJUIGNoaXBzZXQgNTM5MiwgcmV2IDAyMjMsIGFuZCBSRiBjaGlwc2V0
IDUzNzINCj4gKiBFZHVwIEVQLU44NTM3IHdpdGggUlQgY2hpcHNldCA1MzkwLCByZXYgMDUwMiwg
YW5kIFJGIGNoaXBzZXQgNTM3MA0KPiANCj4gSSd2ZSBhbHNvIGZvdW5kIHRoYXQgd2l0aCB0aGUg
WW9jdG8tYnVpbHQgNC40LjEyIGtlcm5lbCwgdGhpcyBuby1zY2FuIGlzc3VlIG9ubHkNCj4gaGFw
cGVucyB0byB0aGUgRWR1cCB3aXRoIHRoZSA1MzkwIGNoaXBzZXQuIFRoZSBELUxpbmsgaXMgZmlu
ZS4NCg0KQWN0dWFsbHksIEkgd2FzIHdyb25nLiBXaXRoIHRoZSAzLjE0LnggWW9jdG8tYnVpbHQg
a2VybmVsLCB0aGlzIG5vLXNjYW4gaXNzdWUgb25seSBoYXBwZW5zIHdpdGggdGhlIEVkdXAgd2l0
aCB0aGUgNTM5MCBjaGlwc2V0LCBhbmQgdGhlIEQtTGluayBpcyBmaW5lLg0KDQpCdXQgZnVydGhl
ciB0ZXN0aW5nIHdpdGggdGhlIDQuNC4xMiBZb2N0by1idWlsdCBrZXJuZWwgc2hvd3MgdGhhdCBp
dCByYW5kb21seSBzb21ldGltZXMgaGFwcGVucyBhbmQgc29tZXRpbWVzIGRvZXNuJ3Qgd2l0aCBl
aXRoZXIgdGhlIEVkdXAgb3IgRC1MaW5rIGRldmljZXMuIFRoYXQncyBlc3BlY2lhbGx5IGludGVy
ZXN0aW5nLCBiZWNhdXNlIGl0IHN1Z2dlc3RzIHRoYXQgdGhlcmUgbWF5IGJlIGEgcmFjZSBjb25k
aXRpb24gaGFwcGVuaW5nIGR1cmluZyB0aGUgZHJpdmVyIGluaXRpYWxpc2F0aW9uIGNvZGUgKGNh
bGxlZCBmcm9tIHJ0MngwMGxpYl9zdGFydCgpKS4gQXQgZmlyc3QgSSB0aG91Z2h0IGl0IHdhcyBh
IHJhY2UgY29uZGl0aW9uIGJldHdlZW4gdGhlIGNhbGxzIHRvIHJ0MngwMGxpYl9sb2FkX2Zpcm13
YXJlKCkgYW5kIHJ0MngwMGxpYl9pbml0aWFsaXplKCksIGJ1dCBhZGRpbmcgYSB0aW1lIGRlbGF5
IGJldHdlZW4gdGhvc2UgY2FsbHMgZGlkbid0IGhlbHAuDQoNCkknbSB3b25kZXJpbmcgd2hhdCB0
aGUgZGlmZmVyZW5jZSBpcyBiZXR3ZWVuIHRoZSB0d28gY2hpcHNldHMsIHNvIHRoYXQgdGhlIHBy
b2JsZW0gaGFwcGVucyBtb3JlIG9uIG9uZSBjaGlwc2V0IHRoYW4gdGhlIG90aGVyLiBCdXQgbm90
IGV4Y2x1c2l2ZWx5LCBhcyBJIG1lbnRpb25lZCBhYm92ZSwgc28gYWdhaW4sIHRoaXMgcG9pbnRz
IHRvIGEgbWFyZ2luYWwgdGltaW5nIGlzc3VlIHRoYXQgYWZmZWN0cyBvbmUgbW9yZSB0aGFuIHRo
ZSBvdGhlci4NCg0KPiBXaXRoIHRoZSBVYnVudHUgNC40LjYga2VybmVsLCBib3RoIGRldmljZXMg
d29yayBmaW5lLCB3aXRob3V0IHRoaXMgbm8tc2Nhbg0KPiBwcm9ibGVtLg0KPiAuLi4NCg0KLS0g
DQpDcmFpZyBNY1F1ZWVuDQoNCg==
SSB3cm90ZToNCj4gSSB3cm90ZToNCj4gPiBYb3NlIFZhenF1ZXogUGVyZXogd3JvdGU6DQo+ID4g
PiBDcmFpZyBNY1F1ZWVuIHdyb3RlOg0KPiA+ID4NCj4gPiA+ID4gSSBoYXZlIGEgRC1MaW5rIERX
QS0xNDAgVVNCIFdpLUZpIGRldmljZSB3aGljaCBpcyBydDI4MDAgYmFzZWQNCj4gPiA+ID4gKDUz
OTIgY2hpcHNldCkuIEknbSB0cnlpbmcgdG8gdXNlIGl0IG9uIGEgQmVhZ2xlQm9uZSBCbGFjayBi
YXNlZA0KPiA+ID4gPiBzeXN0ZW0gd2l0aCAzLjE0Lngga2VybmVsIGJ1aWx0IHdpdGggWW9jdG8u
IFdlJ3JlIHVzaW5nIENvbm5NYW4NCj4gPiA+ID4gMS4zMCBhdCB0aGUNCj4gPiBtb21lbnQuDQo+
ID4gPg0KPiA+ID4gVHJ5IGl0IHdpdGggYSBfZGVza3RvcCB4ODZfNjQgZGlzdHJpYnV0aW9uXyAs
IHdpdGggYSAqcmVjZW50IGtlcm5lbCoNCj4gPiA+IGFzDQo+ID4gPiBGZWRvcmE6IChXT1JLIGlz
IGdub21lKQ0KPiA+ID4gaHR0cHM6Ly9hbHQuZmVkb3JhcHJvamVjdC5vcmcvcHViL2FsdC9saXZl
LXJlc3BpbnMvDQo+ID4NCj4gPiBIbW0sIHRoYXQgaXMgbm9uLXRyaXZpYWwgYnV0IEkgbWF5IHRy
eSBpdC4NCj4gPg0KPiA+IEZvciBub3csIEknbGwgYWxzbyB0cnkgYSA0LjQuNiBrZXJuZWwgcnVu
bmluZyBvbiBhIEJlYWdsZUJvbmUgQmxhY2sNCj4gPiAod2l0aCBhIFVTQiBodWIgdG8gd29yayBh
cm91bmQgYW5vdGhlciBpc3N1ZSB3aXRoIHRoZSBydDI4MDB1c2IgZHJpdmVyDQo+ID4gY3Jhc2hp
bmcgYXMgZGVzY3JpYmVkIGluIGFub3RoZXIgZS1tYWlsKS4NCj4gPg0KPiA+ID4gPiBXZSd2ZSBi
ZWVuIGZpbmRpbmcgc29tZSBpbnN0YWJpbGl0aWVzIHdpdGggaXQgcGVyaW9kaWNhbGx5DQo+ID4g
PiA+IGRpc2Nvbm5lY3RpbmcgZnJvbSBzb21lIG5ldHdvcmtzLiBTbyB3ZSB0cmllZCB1cGdyYWRp
bmcgdGhlDQo+ID4gPiA+IGZpcm13YXJlIGZpbGUgcnQyODcwLmJpbiBmcm9tIHZlcnNpb24gMC4y
OSB0byAwLjM2LiBUaGF0IHNlZW1zIHRvDQo+ID4gPiA+IGJlIG1vcmUgc3RhYmxlIHdpdGggdGhl
IG5ldHdvcmsuIEhvd2V2ZXIsIHdlJ3JlIGZpbmRpbmcgdGhhdCBpdA0KPiA+ID4gPiBpbml0aWFs
bHkgZG9lc24ndCBjb25uZWN0LCB1bnRpbCB0aGUgV2ktRmkgaGFzIGJlZW4gZGlzYWJsZWQgYW5k
IHRoZW4gcmUtDQo+IGVuYWJsZWQuICcNCj4gPiA+IHNjYW4gd2lmaScNCj4gPiA+ID4gYW5kICdp
d2xpc3Qgc2NhbicgZG9uJ3QgcmV0dXJuIGFueXRoaW5nIHVudGlsIFdpLUZpIGhhcyBiZWVuDQo+
ID4gPiA+IGRpc2FibGVkIGFuZCB0aGVuIHJlLWVuYWJsZWQuDQo+ID4gPg0KPiA+ID4gRG9uJ3Qg
dXNlIGFueSB3cmFwcGVyKE5NLCBDb25uTWFuLCB3aWNkLCAuLi4pLCB1c3VhbGx5IGFyZSBidWdn
eS4NCj4gPiA+IFlvdSBzaG91bGQgdXNlIHJhdyBjb21tYW5kcyAiaXciIGFuZCAid3BhX3N1cHBs
aWNhbnQiLiBIaW50czoNCj4gPiA+IGh0dHBzOi8vd2lyZWxlc3Mud2lraS5rZXJuZWwub3JnL2Vu
L3VzZXJzL2RvY3VtZW50YXRpb24vaXcgYW5kDQo+ID4gPiB3cGFfc3VwcGxpY2FudCBhbHdheXMg
cnVubmluZyB3aXRoICItRG5sODAyMTEiDQo+ID4NCj4gPiBPa2F5LCBJJ3ZlIHN0cmlwcGVkIGRv
d24gdGhlIHN5c3RlbSBzbyBDb25uTWFuLCB1ZGV2IHJ1bGVzIGFyZW4ndA0KPiBydW5uaW5nLg0K
PiA+DQo+ID4gT24gYWxsIHN5c3RlbXMsIGFmdGVyIHBsdWdnaW5nIGluIHRoZSBkZXZpY2UsIEkg
aGF2ZSB0byBpc3N1ZToNCj4gPg0KPiA+ICAgICBpcCBsaW5rIHNldCB3bGFuMCB1cA0KPiA+DQo+
ID4gQWZ0ZXIgdGhpcywgSSB0cnkgdG8gZG8gYSBzY2FuOg0KPiA+DQo+ID4gICAgIGl3IGRldiB3
bGFuMCBzY2FuDQo+ID4NCj4gPiBPbiBrZXJuZWwgNC40LjYsIHdpdGggZmlybXdhcmUgMC4zNiwg
aXQgd29ya3MgZmluZSAobGlzdHMgQVBzIGl0DQo+ID4gZmluZHMpLiBPbiBrZXJuZWwgMy4xNC54
LCB3aXRoIGZpcm13YXJlIDAuMjksIGl0IHdvcmtzIGZpbmUuIEJ1dCBvbg0KPiA+IGtlcm5lbCAz
LjE0LngsIHdpdGggZmlybXdhcmUgMC4zNiwgaXQgcmV0dXJucyBub3RoaW5nLiBCdXQgdGhlbiwg
aWYgSSBkbyB0aGlzOg0KPiA+DQo+ID4gICAgIGlwIGxpbmsgc2V0IHdsYW4wIGRvd24NCj4gPiAg
ICAgaXAgbGluayBzZXQgd2xhbjAgdXANCj4gPiAgICAgaXcgZGV2IHdsYW4wIHNjYW4NCj4gPg0K
PiA+IFRoZW4gaXQgd29ya3MgZmluZS4NCj4gPg0KPiA+IFNvLCB0aGUgcXVlc3Rpb24gaXMsIHdo
eSBkb2VzIGZpcm13YXJlIDAuMzYgd2l0aCBrZXJuZWwgMy4xNC54IG5vdA0KPiA+IHdvcmsgdW50
aWwgSSd2ZSBtYWRlIHRoZSBpbnRlcmZhY2UgZ28gdXAsIHRoZW4gZG93biwgYW5kIHRoZW4gdXAg
YWdhaW4/DQo+IA0KPiBJJ3ZlIG1hbmFnZWQgdG8gYnVpbGQsIHVzaW5nIFlvY3RvLCBrZXJuZWwg
NC40LjEyIGZvciBCZWFnbGVCb25lLiBXaGVuIEkgcnVuDQo+IGl0LCBpdCBoYXMgdGhlIHNhbWUg
cHJvYmxlbS4gVGhhdCdzIGRpZmZlcmVudCBmcm9tIHRoZSBVYnVudHUgMTYuMDQgZm9yDQo+IEJl
YWdsZUJvbmUgdXNpbmcgNC40LjYga2VybmVsLg0KPiANCj4gV2l0aCBteSBZb2N0byBidWlsZCwg
aXQgaGFkIGEgZGlmZmVyZW50IHZlcnNpb24gb2YgdGhlICdpcCcgYW5kICdpdycgY29tbWFuZHMu
DQo+IFNvIEkgdHJpZWQgY29weWluZyB0aGUgVWJ1bnR1IHZlcnNpb25zLCBidXQgdGhhdCBkaWRu
J3QgbWFrZSBhIGRpZmZlcmVuY2UuIEkNCj4gdHJpZWQgdXNpbmcgdGhlIFlvY3RvIGJ1aWx0IDQu
NC4xMiBrZXJuZWwgd2l0aCB0aGUgVWJ1bnR1IHJvb3QgZmlsZXN5c3RlbSwgYnV0DQo+IGl0IGhh
bHRlZCBkdXJpbmcgdGhlIGJvb3QgcHJvY2VzcyAoZG9uJ3Qga25vdyB3aHkpLiBNeSBiZXN0IGd1
ZXNzIGlzIHRoYXQNCj4gdGhlcmUncyBzb21lIGtlcm5lbCBjb25maWcgZGlmZmVyZW5jZSB0aGF0
IG1ha2VzIGEgZGlmZmVyZW5jZSwgYnV0IHRoZXJlIGFyZQ0KPiBtYW55IGRpZmZlcmVuY2VzLCBz
byBJJ20gbm90IHN1cmUgd2hpY2ggb25lIGl0IG1pZ2h0IGJlLg0KPiANCj4gSSdtIG5vdCBzdXJl
IGF0IHRoaXMgcG9pbnQgaG93IHRvIG5hcnJvdyBpdCBkb3duIHRvIHRoZSByb290IGNhdXNlLiBB
bnkNCj4gYWR2aWNlPw0KPiANCj4gSSB3b25kZXIgaWYgbWF5YmUgdGhlcmUncyBhIHJhY2UgY29u
ZGl0aW9uIGluIHRoZSBydDI4MDB1c2IgZHJpdmVyIGJldHdlZW4NCj4gbG9hZGluZyB0aGUgcnQy
ODcwLmJpbiBmaXJtd2FyZSBhbmQgZG9pbmcgdGhlIGludGVyZmFjZS11cCBpbml0aWFsaXNhdGlv
bi4NCj4gTm9ybWFsbHkgdGhlIGZpcm13YXJlIGxvYWRzIGF0IHRoZSBwb2ludCBvZiBkb2luZyB0
aGUgJ2l3IGxpbmsgc2V0IHdsYW4wIHVwJw0KPiBjb21tYW5kLiBJcyB0aGVyZSBhIHdheSB0byBm
b3JjZSB0aGUgZmlybXdhcmUgdG8gbG9hZCBiZWZvcmUgdGhhdA0KPiBjb21tYW5kPw0KDQpJJ3Zl
IGdvdCB0d28gcnQyODAwIGRldmljZXM6DQoNCiogRC1MaW5rIERXQS0xNDAgd2l0aCBSVCBjaGlw
c2V0IDUzOTIsIHJldiAwMjIzLCBhbmQgUkYgY2hpcHNldCA1MzcyDQoqIEVkdXAgRVAtTjg1Mzcg
d2l0aCBSVCBjaGlwc2V0IDUzOTAsIHJldiAwNTAyLCBhbmQgUkYgY2hpcHNldCA1MzcwDQoNCkkn
dmUgYWxzbyBmb3VuZCB0aGF0IHdpdGggdGhlIFlvY3RvLWJ1aWx0IDQuNC4xMiBrZXJuZWwsIHRo
aXMgbm8tc2NhbiBpc3N1ZSBvbmx5IGhhcHBlbnMgdG8gdGhlIEVkdXAgd2l0aCB0aGUgNTM5MCBj
aGlwc2V0LiBUaGUgRC1MaW5rIGlzIGZpbmUuDQoNCldpdGggdGhlIFVidW50dSA0LjQuNiBrZXJu
ZWwsIGJvdGggZGV2aWNlcyB3b3JrIGZpbmUsIHdpdGhvdXQgdGhpcyBuby1zY2FuIHByb2JsZW0u
DQoNCkknbSBoYXZpbmcgdHJvdWJsZSBuYXJyb3dpbmcgaXQgZG93biBmdXJ0aGVyLCBzaW5jZSB0
aGVzZSB2YXJ5aW5nIGNpcmN1bXN0YW5jZXMgZG9uJ3Qgb2J2aW91c2x5IHBvaW50IHRvd2FyZHMg
YSByb290IGNhdXNlLiBTb21laG93IGl0IHNlZW1zIHRvIGJlIGRlcGVuZGVudCBvbiBhIGNvbWJp
bmF0aW9uIG9mIGtlcm5lbCBjb25maWd1cmF0aW9uLCB0aGUgZGV2aWNlJ3MgY2hpcHNldCwgYW5k
IHdoaWNoIGZpcm13YXJlIGlzIGxvYWRlZCBvbiB0aGUgZGV2aWNlLiBVbmxlc3MgaXQncyBqdXN0
IGEgbWFyZ2luYWwgdGltaW5nIGlzc3VlIGR1ZSB0byBzb21lIHJhY2UgY29uZGl0aW9uLiBCdXQg
YXQgdGhpcyBwb2ludCBJJ20gbm90IHN1cmUgd2hlcmUgdG8gbG9vay4NCg0KQW55IGFkdmljZSB3
b3VsZCBiZSBtdWNoIGFwcHJlY2lhdGVkOyBJJ20gbm90IHN1cmUgd2hlcmUgdG8gbG9vayBuZXh0
IHNpbmNlIEknbSBub3QgZmFtaWxpYXIgd2l0aCB0aGUgVVNCIGFuZCBXaS1GaSBzeXN0ZW1zIG9m
IHRoZSBrZXJuZWwuDQoNCldoZXJlIG1pZ2h0IEkgZmluZCBydDI4MDAgZXhwZXJ0cy9tYWludGFp
bmVycyB0aGVzZSBkYXlzIHdobyBtaWdodCBiZSBhYmxlIHRvIGdpdmUgc29tZSBhZHZpY2Ugb24g
dGhpcz8NCg0KVGhhbmtzLA0KQ3JhaWcgTWNRdWVlbg0KDQo=
Q3JhaWcgTWNRdWVlbiB3cm90ZToNCj4gWG9zZSBWYXpxdWV6IFBlcmV6IHdyb3RlOg0KPiA+IENy
YWlnIE1jUXVlZW4gd3JvdGU6DQo+ID4NCj4gPiA+IEkgaGF2ZSBhIEQtTGluayBEV0EtMTQwIFVT
QiBXaS1GaSBkZXZpY2Ugd2hpY2ggaXMgcnQyODAwIGJhc2VkICg1MzkyDQo+ID4gPiBjaGlwc2V0
KS4gSSdtIHRyeWluZyB0byB1c2UgaXQgb24gYSBCZWFnbGVCb25lIEJsYWNrIGJhc2VkIHN5c3Rl
bQ0KPiA+ID4gd2l0aCAzLjE0Lngga2VybmVsIGJ1aWx0IHdpdGggWW9jdG8uIFdlJ3JlIHVzaW5n
IENvbm5NYW4gMS4zMCBhdCB0aGUNCj4gbW9tZW50Lg0KPiA+DQo+ID4gVHJ5IGl0IHdpdGggYSBf
ZGVza3RvcCB4ODZfNjQgZGlzdHJpYnV0aW9uXyAsIHdpdGggYSAqcmVjZW50IGtlcm5lbCoNCj4g
PiBhcw0KPiA+IEZlZG9yYTogKFdPUksgaXMgZ25vbWUpDQo+ID4gaHR0cHM6Ly9hbHQuZmVkb3Jh
cHJvamVjdC5vcmcvcHViL2FsdC9saXZlLXJlc3BpbnMvDQo+IA0KPiBIbW0sIHRoYXQgaXMgbm9u
LXRyaXZpYWwgYnV0IEkgbWF5IHRyeSBpdC4NCj4gDQo+IEZvciBub3csIEknbGwgYWxzbyB0cnkg
YSA0LjQuNiBrZXJuZWwgcnVubmluZyBvbiBhIEJlYWdsZUJvbmUgQmxhY2sgKHdpdGggYSBVU0IN
Cj4gaHViIHRvIHdvcmsgYXJvdW5kIGFub3RoZXIgaXNzdWUgd2l0aCB0aGUgcnQyODAwdXNiIGRy
aXZlciBjcmFzaGluZyBhcw0KPiBkZXNjcmliZWQgaW4gYW5vdGhlciBlLW1haWwpLg0KPiANCj4g
PiA+IFdlJ3ZlIGJlZW4gZmluZGluZyBzb21lIGluc3RhYmlsaXRpZXMgd2l0aCBpdCBwZXJpb2Rp
Y2FsbHkNCj4gPiA+IGRpc2Nvbm5lY3RpbmcgZnJvbSBzb21lIG5ldHdvcmtzLiBTbyB3ZSB0cmll
ZCB1cGdyYWRpbmcgdGhlIGZpcm13YXJlDQo+ID4gPiBmaWxlIHJ0Mjg3MC5iaW4gZnJvbSB2ZXJz
aW9uIDAuMjkgdG8gMC4zNi4gVGhhdCBzZWVtcyB0byBiZSBtb3JlDQo+ID4gPiBzdGFibGUgd2l0
aCB0aGUgbmV0d29yay4gSG93ZXZlciwgd2UncmUgZmluZGluZyB0aGF0IGl0IGluaXRpYWxseQ0K
PiA+ID4gZG9lc24ndCBjb25uZWN0LCB1bnRpbCB0aGUgV2ktRmkgaGFzIGJlZW4gZGlzYWJsZWQg
YW5kIHRoZW4gcmUtZW5hYmxlZC4gJw0KPiA+IHNjYW4gd2lmaScNCj4gPiA+IGFuZCAnaXdsaXN0
IHNjYW4nIGRvbid0IHJldHVybiBhbnl0aGluZyB1bnRpbCBXaS1GaSBoYXMgYmVlbg0KPiA+ID4g
ZGlzYWJsZWQgYW5kIHRoZW4gcmUtZW5hYmxlZC4NCj4gPg0KPiA+IERvbid0IHVzZSBhbnkgd3Jh
cHBlcihOTSwgQ29ubk1hbiwgd2ljZCwgLi4uKSwgdXN1YWxseSBhcmUgYnVnZ3kuIFlvdQ0KPiA+
IHNob3VsZCB1c2UgcmF3IGNvbW1hbmRzICJpdyIgYW5kICJ3cGFfc3VwcGxpY2FudCIuIEhpbnRz
Og0KPiA+IGh0dHBzOi8vd2lyZWxlc3Mud2lraS5rZXJuZWwub3JnL2VuL3VzZXJzL2RvY3VtZW50
YXRpb24vaXcgYW5kDQo+ID4gd3BhX3N1cHBsaWNhbnQgYWx3YXlzIHJ1bm5pbmcgd2l0aCAiLURu
bDgwMjExIg0KPiANCj4gT2theSwgSSd2ZSBzdHJpcHBlZCBkb3duIHRoZSBzeXN0ZW0gc28gQ29u
bk1hbiwgdWRldiBydWxlcyBhcmVuJ3QgcnVubmluZy4NCj4gDQo+IE9uIGFsbCBzeXN0ZW1zLCBh
ZnRlciBwbHVnZ2luZyBpbiB0aGUgZGV2aWNlLCBJIGhhdmUgdG8gaXNzdWU6DQo+IA0KPiAgICAg
aXAgbGluayBzZXQgd2xhbjAgdXANCj4gDQo+IEFmdGVyIHRoaXMsIEkgdHJ5IHRvIGRvIGEgc2Nh
bjoNCj4gDQo+ICAgICBpdyBkZXYgd2xhbjAgc2Nhbg0KPiANCj4gT24ga2VybmVsIDQuNC42LCB3
aXRoIGZpcm13YXJlIDAuMzYsIGl0IHdvcmtzIGZpbmUgKGxpc3RzIEFQcyBpdCBmaW5kcykuIE9u
IGtlcm5lbA0KPiAzLjE0LngsIHdpdGggZmlybXdhcmUgMC4yOSwgaXQgd29ya3MgZmluZS4gQnV0
IG9uIGtlcm5lbCAzLjE0LngsIHdpdGggZmlybXdhcmUNCj4gMC4zNiwgaXQgcmV0dXJucyBub3Ro
aW5nLiBCdXQgdGhlbiwgaWYgSSBkbyB0aGlzOg0KPiANCj4gICAgIGlwIGxpbmsgc2V0IHdsYW4w
IGRvd24NCj4gICAgIGlwIGxpbmsgc2V0IHdsYW4wIHVwDQo+ICAgICBpdyBkZXYgd2xhbjAgc2Nh
bg0KPiANCj4gVGhlbiBpdCB3b3JrcyBmaW5lLg0KPiANCj4gU28sIHRoZSBxdWVzdGlvbiBpcywg
d2h5IGRvZXMgZmlybXdhcmUgMC4zNiB3aXRoIGtlcm5lbCAzLjE0Lnggbm90IHdvcmsgdW50aWwN
Cj4gSSd2ZSBtYWRlIHRoZSBpbnRlcmZhY2UgZ28gdXAsIHRoZW4gZG93biwgYW5kIHRoZW4gdXAg
YWdhaW4/DQoNCkkndmUgbWFuYWdlZCB0byBidWlsZCwgdXNpbmcgWW9jdG8sIGtlcm5lbCA0LjQu
MTIgZm9yIEJlYWdsZUJvbmUuIFdoZW4gSSBydW4gaXQsIGl0IGhhcyB0aGUgc2FtZSBwcm9ibGVt
LiBUaGF0J3MgZGlmZmVyZW50IGZyb20gdGhlIFVidW50dSAxNi4wNCBmb3IgQmVhZ2xlQm9uZSB1
c2luZyA0LjQuNiBrZXJuZWwuDQoNCldpdGggbXkgWW9jdG8gYnVpbGQsIGl0IGhhZCBhIGRpZmZl
cmVudCB2ZXJzaW9uIG9mIHRoZSAnaXAnIGFuZCAnaXcnIGNvbW1hbmRzLiBTbyBJIHRyaWVkIGNv
cHlpbmcgdGhlIFVidW50dSB2ZXJzaW9ucywgYnV0IHRoYXQgZGlkbid0IG1ha2UgYSBkaWZmZXJl
bmNlLiBJIHRyaWVkIHVzaW5nIHRoZSBZb2N0byBidWlsdCA0LjQuMTIga2VybmVsIHdpdGggdGhl
IFVidW50dSByb290IGZpbGVzeXN0ZW0sIGJ1dCBpdCBoYWx0ZWQgZHVyaW5nIHRoZSBib290IHBy
b2Nlc3MgKGRvbid0IGtub3cgd2h5KS4gTXkgYmVzdCBndWVzcyBpcyB0aGF0IHRoZXJlJ3Mgc29t
ZSBrZXJuZWwgY29uZmlnIGRpZmZlcmVuY2UgdGhhdCBtYWtlcyBhIGRpZmZlcmVuY2UsIGJ1dCB0
aGVyZSBhcmUgbWFueSBkaWZmZXJlbmNlcywgc28gSSdtIG5vdCBzdXJlIHdoaWNoIG9uZSBpdCBt
aWdodCBiZS4NCg0KSSdtIG5vdCBzdXJlIGF0IHRoaXMgcG9pbnQgaG93IHRvIG5hcnJvdyBpdCBk
b3duIHRvIHRoZSByb290IGNhdXNlLiBBbnkgYWR2aWNlPw0KDQpJIHdvbmRlciBpZiBtYXliZSB0
aGVyZSdzIGEgcmFjZSBjb25kaXRpb24gaW4gdGhlIHJ0MjgwMHVzYiBkcml2ZXIgYmV0d2VlbiBs
b2FkaW5nIHRoZSBydDI4NzAuYmluIGZpcm13YXJlIGFuZCBkb2luZyB0aGUgaW50ZXJmYWNlLXVw
IGluaXRpYWxpc2F0aW9uLiBOb3JtYWxseSB0aGUgZmlybXdhcmUgbG9hZHMgYXQgdGhlIHBvaW50
IG9mIGRvaW5nIHRoZSAnaXcgbGluayBzZXQgd2xhbjAgdXAnIGNvbW1hbmQuIElzIHRoZXJlIGEg
d2F5IHRvIGZvcmNlIHRoZSBmaXJtd2FyZSB0byBsb2FkIGJlZm9yZSB0aGF0IGNvbW1hbmQ/DQoN
Ci0tIA0KQ3JhaWcgTWNRdWVlbg0KDQo=
SSB3cm90ZToNCj4gSSB3cm90ZToNCj4gPiBJIHdyb3RlOg0KPiA+ID4gSSB3cm90ZToNCj4gPiA+
ID4gWG9zZSBWYXpxdWV6IFBlcmV6IHdyb3RlOg0KPiA+ID4gPiA+IENyYWlnIE1jUXVlZW4gd3Jv
dGU6DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiA+IEkgaGF2ZSBhIEQtTGluayBEV0EtMTQwIFVTQiBX
aS1GaSBkZXZpY2Ugd2hpY2ggaXMgcnQyODAwIGJhc2VkDQo+ID4gPiA+ID4gPiAoNTM5MiBjaGlw
c2V0KS4gSSdtIHRyeWluZyB0byB1c2UgaXQgb24gYSBCZWFnbGVCb25lIEJsYWNrDQo+ID4gPiA+
ID4gPiBiYXNlZCBzeXN0ZW0gd2l0aCAzLjE0Lngga2VybmVsIGJ1aWx0IHdpdGggWW9jdG8uIFdl
J3JlIHVzaW5nDQo+ID4gPiA+ID4gPiBDb25uTWFuDQo+ID4gPiA+ID4gPiAxLjMwIGF0IHRoZQ0K
PiA+ID4gPiBtb21lbnQuDQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBUcnkgaXQgd2l0aCBhIF9kZXNr
dG9wIHg4Nl82NCBkaXN0cmlidXRpb25fICwgd2l0aCBhICpyZWNlbnQNCj4gPiA+ID4gPiBrZXJu
ZWwqIGFzDQo+ID4gPiA+ID4gRmVkb3JhOiAoV09SSyBpcyBnbm9tZSkNCj4gPiA+ID4gPiBodHRw
czovL2FsdC5mZWRvcmFwcm9qZWN0Lm9yZy9wdWIvYWx0L2xpdmUtcmVzcGlucy8NCj4gPiA+ID4N
Cj4gPiA+ID4gSG1tLCB0aGF0IGlzIG5vbi10cml2aWFsIGJ1dCBJIG1heSB0cnkgaXQuDQo+ID4g
PiA+DQo+ID4gPiA+IEZvciBub3csIEknbGwgYWxzbyB0cnkgYSA0LjQuNiBrZXJuZWwgcnVubmlu
ZyBvbiBhIEJlYWdsZUJvbmUNCj4gPiA+ID4gQmxhY2sgKHdpdGggYSBVU0IgaHViIHRvIHdvcmsg
YXJvdW5kIGFub3RoZXIgaXNzdWUgd2l0aCB0aGUNCj4gPiA+ID4gcnQyODAwdXNiIGRyaXZlciBj
cmFzaGluZyBhcyBkZXNjcmliZWQgaW4gYW5vdGhlciBlLW1haWwpLg0KPiA+ID4gPg0KPiA+ID4g
PiA+ID4gV2UndmUgYmVlbiBmaW5kaW5nIHNvbWUgaW5zdGFiaWxpdGllcyB3aXRoIGl0IHBlcmlv
ZGljYWxseQ0KPiA+ID4gPiA+ID4gZGlzY29ubmVjdGluZyBmcm9tIHNvbWUgbmV0d29ya3MuIFNv
IHdlIHRyaWVkIHVwZ3JhZGluZyB0aGUNCj4gPiA+ID4gPiA+IGZpcm13YXJlIGZpbGUgcnQyODcw
LmJpbiBmcm9tIHZlcnNpb24gMC4yOSB0byAwLjM2LiBUaGF0IHNlZW1zDQo+ID4gPiA+ID4gPiB0
byBiZSBtb3JlIHN0YWJsZSB3aXRoIHRoZSBuZXR3b3JrLiBIb3dldmVyLCB3ZSdyZSBmaW5kaW5n
DQo+ID4gPiA+ID4gPiB0aGF0IGl0IGluaXRpYWxseSBkb2Vzbid0IGNvbm5lY3QsIHVudGlsIHRo
ZSBXaS1GaSBoYXMgYmVlbg0KPiA+ID4gPiA+ID4gZGlzYWJsZWQgYW5kIHRoZW4gcmUtDQo+ID4g
PiBlbmFibGVkLiAnDQo+ID4gPiA+ID4gc2NhbiB3aWZpJw0KPiA+ID4gPiA+ID4gYW5kICdpd2xp
c3Qgc2NhbicgZG9uJ3QgcmV0dXJuIGFueXRoaW5nIHVudGlsIFdpLUZpIGhhcyBiZWVuDQo+ID4g
PiA+ID4gPiBkaXNhYmxlZCBhbmQgdGhlbiByZS1lbmFibGVkLg0KPiA+ID4gPiA+DQo+ID4gPiA+
ID4gRG9uJ3QgdXNlIGFueSB3cmFwcGVyKE5NLCBDb25uTWFuLCB3aWNkLCAuLi4pLCB1c3VhbGx5
IGFyZSBidWdneS4NCj4gPiA+ID4gPiBZb3Ugc2hvdWxkIHVzZSByYXcgY29tbWFuZHMgIml3IiBh
bmQgIndwYV9zdXBwbGljYW50Ii4gSGludHM6DQo+ID4gPiA+ID4gaHR0cHM6Ly93aXJlbGVzcy53
aWtpLmtlcm5lbC5vcmcvZW4vdXNlcnMvZG9jdW1lbnRhdGlvbi9pdyBhbmQNCj4gPiA+ID4gPiB3
cGFfc3VwcGxpY2FudCBhbHdheXMgcnVubmluZyB3aXRoICItRG5sODAyMTEiDQo+ID4gPiA+DQo+
ID4gPiA+IE9rYXksIEkndmUgc3RyaXBwZWQgZG93biB0aGUgc3lzdGVtIHNvIENvbm5NYW4sIHVk
ZXYgcnVsZXMgYXJlbid0DQo+ID4gPiBydW5uaW5nLg0KPiA+ID4gPg0KPiA+ID4gPiBPbiBhbGwg
c3lzdGVtcywgYWZ0ZXIgcGx1Z2dpbmcgaW4gdGhlIGRldmljZSwgSSBoYXZlIHRvIGlzc3VlOg0K
PiA+ID4gPg0KPiA+ID4gPiAgICAgaXAgbGluayBzZXQgd2xhbjAgdXANCj4gPiA+ID4NCj4gPiA+
ID4gQWZ0ZXIgdGhpcywgSSB0cnkgdG8gZG8gYSBzY2FuOg0KPiA+ID4gPg0KPiA+ID4gPiAgICAg
aXcgZGV2IHdsYW4wIHNjYW4NCj4gPiA+ID4NCj4gPiA+ID4gT24ga2VybmVsIDQuNC42LCB3aXRo
IGZpcm13YXJlIDAuMzYsIGl0IHdvcmtzIGZpbmUgKGxpc3RzIEFQcyBpdA0KPiA+ID4gPiBmaW5k
cykuIE9uIGtlcm5lbCAzLjE0LngsIHdpdGggZmlybXdhcmUgMC4yOSwgaXQgd29ya3MgZmluZS4g
QnV0DQo+ID4gPiA+IG9uIGtlcm5lbCAzLjE0LngsIHdpdGggZmlybXdhcmUgMC4zNiwgaXQgcmV0
dXJucyBub3RoaW5nLiBCdXQgdGhlbiwgaWYgSSBkbw0KPiB0aGlzOg0KPiA+ID4gPg0KPiA+ID4g
PiAgICAgaXAgbGluayBzZXQgd2xhbjAgZG93bg0KPiA+ID4gPiAgICAgaXAgbGluayBzZXQgd2xh
bjAgdXANCj4gPiA+ID4gICAgIGl3IGRldiB3bGFuMCBzY2FuDQo+ID4gPiA+DQo+ID4gPiA+IFRo
ZW4gaXQgd29ya3MgZmluZS4NCj4gPiA+ID4NCj4gPiA+ID4gU28sIHRoZSBxdWVzdGlvbiBpcywg
d2h5IGRvZXMgZmlybXdhcmUgMC4zNiB3aXRoIGtlcm5lbCAzLjE0Lnggbm90DQo+ID4gPiA+IHdv
cmsgdW50aWwgSSd2ZSBtYWRlIHRoZSBpbnRlcmZhY2UgZ28gdXAsIHRoZW4gZG93biwgYW5kIHRo
ZW4gdXANCj4gYWdhaW4/DQo+ID4gPg0KPiA+ID4gSSd2ZSBtYW5hZ2VkIHRvIGJ1aWxkLCB1c2lu
ZyBZb2N0bywga2VybmVsIDQuNC4xMiBmb3IgQmVhZ2xlQm9uZS4NCj4gPiA+IFdoZW4gSSBydW4g
aXQsIGl0IGhhcyB0aGUgc2FtZSBwcm9ibGVtLiBUaGF0J3MgZGlmZmVyZW50IGZyb20gdGhlDQo+
ID4gPiBVYnVudHUNCj4gPiA+IDE2LjA0IGZvciBCZWFnbGVCb25lIHVzaW5nIDQuNC42IGtlcm5l
bC4NCj4gPiA+DQo+ID4gPiBXaXRoIG15IFlvY3RvIGJ1aWxkLCBpdCBoYWQgYSBkaWZmZXJlbnQg
dmVyc2lvbiBvZiB0aGUgJ2lwJyBhbmQgJ2l3Jw0KPiA+IGNvbW1hbmRzLg0KPiA+ID4gU28gSSB0
cmllZCBjb3B5aW5nIHRoZSBVYnVudHUgdmVyc2lvbnMsIGJ1dCB0aGF0IGRpZG4ndCBtYWtlIGEN
Cj4gPiA+IGRpZmZlcmVuY2UuIEkgdHJpZWQgdXNpbmcgdGhlIFlvY3RvIGJ1aWx0IDQuNC4xMiBr
ZXJuZWwgd2l0aCB0aGUNCj4gPiA+IFVidW50dSByb290IGZpbGVzeXN0ZW0sIGJ1dCBpdCBoYWx0
ZWQgZHVyaW5nIHRoZSBib290IHByb2Nlc3MgKGRvbid0DQo+ID4gPiBrbm93IHdoeSkuIE15IGJl
c3QgZ3Vlc3MgaXMgdGhhdCB0aGVyZSdzIHNvbWUga2VybmVsIGNvbmZpZw0KPiA+ID4gZGlmZmVy
ZW5jZSB0aGF0IG1ha2VzIGEgZGlmZmVyZW5jZSwgYnV0IHRoZXJlIGFyZSBtYW55IGRpZmZlcmVu
Y2VzLA0KPiA+ID4gc28gSSdtIG5vdCBzdXJlDQo+ID4gd2hpY2ggb25lIGl0IG1pZ2h0IGJlLg0K
PiA+ID4NCj4gPiA+IEknbSBub3Qgc3VyZSBhdCB0aGlzIHBvaW50IGhvdyB0byBuYXJyb3cgaXQg
ZG93biB0byB0aGUgcm9vdCBjYXVzZS4NCj4gPiA+IEFueSBhZHZpY2U/DQo+ID4gPg0KPiA+ID4g
SSB3b25kZXIgaWYgbWF5YmUgdGhlcmUncyBhIHJhY2UgY29uZGl0aW9uIGluIHRoZSBydDI4MDB1
c2IgZHJpdmVyDQo+ID4gPiBiZXR3ZWVuIGxvYWRpbmcgdGhlIHJ0Mjg3MC5iaW4gZmlybXdhcmUg
YW5kIGRvaW5nIHRoZSBpbnRlcmZhY2UtdXANCj4gPiBpbml0aWFsaXNhdGlvbi4NCj4gPiA+IE5v
cm1hbGx5IHRoZSBmaXJtd2FyZSBsb2FkcyBhdCB0aGUgcG9pbnQgb2YgZG9pbmcgdGhlICdpdyBs
aW5rIHNldCB3bGFuMA0KPiB1cCcNCj4gPiA+IGNvbW1hbmQuIElzIHRoZXJlIGEgd2F5IHRvIGZv
cmNlIHRoZSBmaXJtd2FyZSB0byBsb2FkIGJlZm9yZSB0aGF0DQo+ID4gPiBjb21tYW5kPw0KPiA+
DQo+ID4gSSd2ZSBnb3QgdHdvIHJ0MjgwMCBkZXZpY2VzOg0KPiA+DQo+ID4gKiBELUxpbmsgRFdB
LTE0MCB3aXRoIFJUIGNoaXBzZXQgNTM5MiwgcmV2IDAyMjMsIGFuZCBSRiBjaGlwc2V0IDUzNzIN
Cj4gPiAqIEVkdXAgRVAtTjg1Mzcgd2l0aCBSVCBjaGlwc2V0IDUzOTAsIHJldiAwNTAyLCBhbmQg
UkYgY2hpcHNldCA1MzcwDQo+ID4NCj4gPiBJJ3ZlIGFsc28gZm91bmQgdGhhdCB3aXRoIHRoZSBZ
b2N0by1idWlsdCA0LjQuMTIga2VybmVsLCB0aGlzIG5vLXNjYW4NCj4gPiBpc3N1ZSBvbmx5IGhh
cHBlbnMgdG8gdGhlIEVkdXAgd2l0aCB0aGUgNTM5MCBjaGlwc2V0LiBUaGUgRC1MaW5rIGlzIGZp
bmUuDQo+IA0KPiBBY3R1YWxseSwgSSB3YXMgd3JvbmcuIFdpdGggdGhlIDMuMTQueCBZb2N0by1i
dWlsdCBrZXJuZWwsIHRoaXMgbm8tc2NhbiBpc3N1ZQ0KPiBvbmx5IGhhcHBlbnMgd2l0aCB0aGUg
RWR1cCB3aXRoIHRoZSA1MzkwIGNoaXBzZXQsIGFuZCB0aGUgRC1MaW5rIGlzIGZpbmUuDQo+IA0K
PiBCdXQgZnVydGhlciB0ZXN0aW5nIHdpdGggdGhlIDQuNC4xMiBZb2N0by1idWlsdCBrZXJuZWwg
c2hvd3MgdGhhdCBpdCByYW5kb21seQ0KPiBzb21ldGltZXMgaGFwcGVucyBhbmQgc29tZXRpbWVz
IGRvZXNuJ3Qgd2l0aCBlaXRoZXIgdGhlIEVkdXAgb3IgRC1MaW5rDQo+IGRldmljZXMuIFRoYXQn
cyBlc3BlY2lhbGx5IGludGVyZXN0aW5nLCBiZWNhdXNlIGl0IHN1Z2dlc3RzIHRoYXQgdGhlcmUg
bWF5IGJlIGENCj4gcmFjZSBjb25kaXRpb24gaGFwcGVuaW5nIGR1cmluZyB0aGUgZHJpdmVyIGlu
aXRpYWxpc2F0aW9uIGNvZGUgKGNhbGxlZCBmcm9tDQo+IHJ0MngwMGxpYl9zdGFydCgpKS4gQXQg
Zmlyc3QgSSB0aG91Z2h0IGl0IHdhcyBhIHJhY2UgY29uZGl0aW9uIGJldHdlZW4gdGhlIGNhbGxz
DQo+IHRvIHJ0MngwMGxpYl9sb2FkX2Zpcm13YXJlKCkgYW5kIHJ0MngwMGxpYl9pbml0aWFsaXpl
KCksIGJ1dCBhZGRpbmcgYSB0aW1lDQo+IGRlbGF5IGJldHdlZW4gdGhvc2UgY2FsbHMgZGlkbid0
IGhlbHAuDQo+IA0KPiBJJ20gd29uZGVyaW5nIHdoYXQgdGhlIGRpZmZlcmVuY2UgaXMgYmV0d2Vl
biB0aGUgdHdvIGNoaXBzZXRzLCBzbyB0aGF0IHRoZQ0KPiBwcm9ibGVtIGhhcHBlbnMgbW9yZSBv
biBvbmUgY2hpcHNldCB0aGFuIHRoZSBvdGhlci4gQnV0IG5vdCBleGNsdXNpdmVseSwgYXMNCj4g
SSBtZW50aW9uZWQgYWJvdmUsIHNvIGFnYWluLCB0aGlzIHBvaW50cyB0byBhIG1hcmdpbmFsIHRp
bWluZyBpc3N1ZSB0aGF0DQo+IGFmZmVjdHMgb25lIG1vcmUgdGhhbiB0aGUgb3RoZXIuDQo+IA0K
PiA+IFdpdGggdGhlIFVidW50dSA0LjQuNiBrZXJuZWwsIGJvdGggZGV2aWNlcyB3b3JrIGZpbmUs
IHdpdGhvdXQgdGhpcw0KPiA+IG5vLXNjYW4gcHJvYmxlbS4NCj4gPiAuLi4NCg0KTm93IEknbSB1
c2luZyBhIDQuOS42NSBrZXJuZWwsIGFuZCB0aGlzIHByb2JsZW0gaXMgc3RpbGwgcHJlc2VudC4g
V2hlbiB0aGUgVVNCIFdpLUZpIGRvbmdsZSBpcyBwbHVnZ2VkIGluLCBpdCBqdXN0IGRvZXNuJ3Qg
ZG8gYW55dGhpbmcgLS0gZG9lc24ndCBzY2FuIGZvciBXaS1GaSBuZXR3b3JrcywgZG9lc24ndCBj
b25uZWN0IHRvIGFueXRoaW5nLg0KDQpNeSBwcm9qZWN0IGlzIHVzaW5nIENvbm5NYW4sIHNvIEkn
dmUgcGF0Y2hlZCBDb25uTWFuIHNvIHRoYXQgaXQgdGFrZXMgdGhlIGRldmljZSB1cCwgdGhlbiBk
b3duLCB0aGVuIHVwIGFnYWluLiBUaGVuIGl0IHJlbGlhYmx5IHdvcmtzLiBCdXQgb2YgY291cnNl
IHRoaXMgaXMgYW4gdWdseSBoYWNrLg0KDQpCYXNlZCBvbiBteSBpbml0aWFsIGludmVzdGlnYXRp
b24sIG15IGh5cG90aGVzaXMgd2FzIHRoYXQgdGhlcmUncyBhIHJhY2UgY29uZGl0aW9uIGR1cmlu
ZyBydDJ4MDBsaWJfc3RhcnQoKSBpbiBydDJ4MDBkZXYuYy4gQXQgZmlyc3QgSSB0aG91Z2h0IGl0
IHdhcyBiZXR3ZWVuIGZpcm13YXJlIGxvYWRpbmcgYW5kIGluaXRpYWxpc2F0aW9uLiBCdXQgYWRk
aW5nIGEgdGltZSBkZWxheSBiZXR3ZWVuIHRoZSBjYWxscyB0byBydDJ4MDBsaWJfbG9hZF9maXJt
d2FyZSgpIGFuZCBydDJ4MDBsaWJfaW5pdGlhbGl6ZSgpIGRpZG4ndCBoZWxwLiBBZGRpbmcgdGlt
ZSBkZWxheXMgYXQgbWFueSBwb3NzaWJsZSBwb2ludHMgaW4gdGhlIGluaXRpYWxpc2F0aW9uIGRp
ZG4ndCBzZWVtIHRvIGhlbHAuIEkgdGhvdWdodCB0aGVyZSBtdXN0IGJlIGEgcmFjZSBjb25kaXRp
b24gaW4gYSB2ZXJ5IHNwZWNpZmljIGxvY2F0aW9uIGluIHRoZSBpbml0aWFsaXNhdGlvbiBzZXF1
ZW5jZSwgYnV0IGNvdWxkIG5vdCBjb25maXJtIHRoYXQgaHlwb3RoZXNpcy4gU28gbm93IEkndmUg
ZHJhd24gYSBibGFuay4NCg0KQW55IGFkdmljZSBvbiBob3cgdG8gZGlhZ25vc2UgYW5kIHJlbWVk
eSB0aGlzIGlzc3VlPw0KDQotLSANCkNyYWlnIE1jUXVlZW4NCg0K
On Wed, Dec 13, 2017 at 11:24:28PM +0000, Craig McQueen wrote:
> > Actually, I was wrong. With the 3.14.x Yocto-built kernel, this no-scan issue
> > only happens with the Edup with the 5390 chipset, and the D-Link is fine.
> >
> > But further testing with the 4.4.12 Yocto-built kernel shows that it randomly
> > sometimes happens and sometimes doesn't with either the Edup or D-Link
> > devices. That's especially interesting, because it suggests that there may be a
> > race condition happening during the driver initialisation code (called from
> > rt2x00lib_start()). At first I thought it was a race condition between the calls
> > to rt2x00lib_load_firmware() and rt2x00lib_initialize(), but adding a time
> > delay between those calls didn't help.
> >
> > I'm wondering what the difference is between the two chipsets, so that the
> > problem happens more on one chipset than the other. But not exclusively, as
> > I mentioned above, so again, this points to a marginal timing issue that
> > affects one more than the other.
> >
> > > With the Ubuntu 4.4.6 kernel, both devices work fine, without this
> > > no-scan problem.
> > > ...
>
> Now I'm using a 4.9.65 kernel, and this problem is still present. When the USB Wi-Fi dongle is plugged in, it just doesn't do anything -- doesn't scan for Wi-Fi networks, doesn't connect to anything.
>
> My project is using ConnMan, so I've patched ConnMan so that it takes the device up, then down, then up again. Then it reliably works. But of course this is an ugly hack.
>
> Based on my initial investigation, my hypothesis was that there's a race condition during rt2x00lib_start() in rt2x00dev.c. At first I thought it was between firmware loading and initialisation. But adding a time delay between the calls to rt2x00lib_load_firmware() and rt2x00lib_initialize() didn't help. Adding time delays at many possible points in the initialisation didn't seem to help. I thought there must be a race condition in a very specific location in the initialisation sequence, but could not confirm that hypothesis. So now I've drawn a blank.
>
> Any advice on how to diagnose and remedy this issue?
I know the vendor driver do initialization sequence twice - after
finish first sequence the same steps are repeated second time.
I don't know why that is needed and on all my Ralink USB devices
one initialization sequence is sufficient with rt2x00 driver.
Right fix to this will be found proper initialization sequence,
so second step will not be needed, but perhaps this is firmware
problem. Anyway ConnMan patch seems to be a good solution
as well ;-)
Cheers
Stanislaw