Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 27 Sep 2015 01:29:23 +0200
From:      Dirk Engling <erdgeist@erdgeist.org>
To:        "freebsd-bluetooth@freebsd.org" <freebsd-bluetooth@freebsd.org>
Subject:   first shot at user friendly bluetooth-config script
Message-ID:  <56072A53.4010005@erdgeist.org>

next in thread | raw e-mail | index | archive | help
This is a multi-part message in MIME format.
--------------000805080601020205030608
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit

Find attached a script that tries to tie together essential parts of the
bluetooth sub-system in a human friendly manner.

Currently I implemented all the steps necessary to get a hid running,
and helping out the user along the way. Next up I want to implement
setting up everything necessary to get connected using the DUN profile,
if available.

Still some questions remain about pairing: besides grepping debug.log's
output, is there a reliable way to get pairing status? Looking into
/var/db/hcsecd.keys may give me positive results, but info like whether
a PIN_Code_Negative_Reply has been sent to the device because of a wrong
pin code would be helpful. It would also be helpful to know if the
device never sent a PIN_Code_Request in the first place. And how do you
use hcsecd to actively start pairing?

The script's style may still be a little concise, but is extensively
documented, I will factor out code blocks into functions later. I am
also trying to make it more usable from a script by adding a quiet mode
that is not interactive and tries to automatically resolve everything by
the info passed on command line.

Now I wonder, where the code will be heading. Is it likely to go into
the bluetooth framework or should I start writing a port? Do you have
suggestions where the user might be provided additional info on how to
continue, especially if stuff breaks?

Regards,

  erdgeist

--------------000805080601020205030608
Content-Type: text/plain; charset=UTF-8; x-mac-type="0"; x-mac-creator="0";
 name="bluetooth-config"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
 filename="bluetooth-config"

IyEvYmluL3NoCgojIGRlZmluZSBvdXIgYmFpbCBvdXQgc2hvcnRjdXQKZXhlcnIgKCkgeyBl
Y2hvIC1lICJFcnJvcjogJCoiID4mMiA7IGV4aXQgMTsgfQoKIyBBc3N1bWluZyB3ZSBhcmUg
Y2FsbGVkIHRvIGRvIHRoZSBwYWlyLW5ldy1kZXZpY2Ugc3ViY29tbWFuZCBmaXJzdAoKbWFp
bigpIHsKdW5zZXQgbm9kZSBkZXZpY2Ugc3RhcnRlZCBiZGFkZHJlc3NlcyByZXRyeQoKWyAk
KCBpZCAtdSApIC1lcSAwIF0gfHwgZXhlcnIgIiQwIG5lZWRzIHRvIG1vZGlmeSBmaWxlcyB0
aGF0IGJlbG9uZyB0byByb290LiBSZS1ydW4gYXMgcm9vdC4iCgojIEdldCBjb21tYW5kIGxp
bmUgb3B0aW9ucwp3aGlsZSBnZXRvcHRzIDphOm46IGFyZzsgZG8KICBjYXNlICR7YXJnfSBp
bgogICAgbikgbm9kZT0iJE9QVEFSRyI7OwogICAgYSkgZGV2aWNlPSIkT1BUQVJHIjs7CiAg
ICA/KSBleGVyciAiU3ludGF4OiAkMCBbLW4gbm9kZV0gY21kIjs7CiAgZXNhYwpkb25lCgpr
bm93bl9ub2Rlcz0kKC91c3Ivc2Jpbi9oY2NvbnRyb2wgcmVhZF9ub2RlX2xpc3QgMj4vZGV2
L251bGwgfCBcCiAgICAvdXNyL2Jpbi90YWlsIC1uICsyIHwgL3Vzci9iaW4vY3V0IC1kICcg
JyAtZiAxKQoKIyBDaGVjayBpZiBuZXRncmFwaCBrbm93cyBhYm91dCBhbnkgSENJIG5vZGVz
CmlmICEgWyAiJHtrbm93bl9ub2Rlc30iIF07IHRoZW4KICBuZ19ub2Rlcz0kKC91c3Ivc2Jp
bi9uZ2N0bCBsaXN0IDI+L2Rldi9udWxsIHwgXAogICAgL3Vzci9iaW4vZ3JlcCAtbyAiTmFt
ZTogLiogVHlwZTogdWJ0IiB8IC91c3IvYmluL2N1dCAtZCAnICcgLWYgMikKCiAgWyAiJHtu
Z19ub2Rlc30iIF0gfHwgZXhlcnIgIk5vIGJsdWV0b290aCBob3N0IGNvbnRyb2xsZXJzIGZv
dW5kLiIKCiAgdW5zZXQgZm91bmQKICBmb3IgbiBpbiAke25nX25vZGVzfTsgZG8KICAgIGlm
IFsgIiR7bn0iID0gIiR7bm9kZSVoY2l9IiBdOyB0aGVuCiAgICAgICMgSWYgd2UgZm91bmQg
dGhlIG5vZGUgYnV0IGl0J3Mgc3RhY2sgaXMgbm90IHNldCB1cCwgZG8gaXQgbm93CiAgICAg
IC91c3Ivc2Jpbi9zZXJ2aWNlIGJsdWV0b290aCBzdGFydCAke25vZGUlaGNpfSB8fCBleGl0
IDEKICAgICAgZm91bmQ9IllFUyIKICAgIGZpCiAgZG9uZQoKICAjIElmIHdlIGhhdmUgYmx1
ZXRvb3RoIGNvbnRyb2xsZXIgbm9kZXMgd2l0aG91dCBhIHNldHVwIHN0YWNrLAogICMgYXNr
IHRoZSB1c2VyIGlmIHdlIHNoYWxsIHN0YXJ0IGl0IHVwCiAgaWYgISBbICIke2ZvdW5kfSIg
XTsgdGhlbgogICAgcHJpbnRmICJObyB1c2FibGUgYmx1ZXRvb3RoIGhvc3QgY29udHJvbGxl
cnMgd2VyZSBmb3VuZC5cblRoZXNlIGhvc3QgY29udHJvbGxlcnMgZXhpc3QgaW4gdGhlIHN5
c3RlbTpcbiAgJXMiICIgJHtuZ19ub2Rlc30iCiAgICByZWFkIC1wICJDaG9vc2UgYSBob3N0
IGNvbnRyb2xsZXIgdG8gc2V0IHVwOiBbJHtuZ19ub2RlcyUlICp9XSIgbm9kZQogICAgOiAk
e25vZGU6PSIke25nX25vZGVzJSUgKn0ifQogICAgL3Vzci9zYmluL3NlcnZpY2UgYmx1ZXRv
b3RoIHN0YXJ0ICR7bm9kZX0gfHwgZXhpdCAxCiAgZmkKCiAgIyBSZS1yZWFkIGtub3duIG5v
ZGVzCiAga25vd25fbm9kZXM9JCgvdXNyL3NiaW4vaGNjb250cm9sIHJlYWRfbm9kZV9saXN0
IDI+L2Rldi9udWxsIHwgXAogICAgL3Vzci9iaW4vdGFpbCAtbiArMiB8IC91c3IvYmluL2N1
dCAtZCAnICcgLWYgMSkKICAjIGNoZWNrIGlmIHdlIHN1Y2NlZWRlZCBpbiBicmluZ2luZyBp
dCB1cAogIFsgIiR7a25vd25fbm9kZXN9IiBdIHx8IGV4ZXJyICJGYWlsZWQgdG8gc2V0dXAg
Ymx1ZXRvb3RoIHN0YWNrIgpmaQoKIyBpZiBhIG5vZGUgd2FzIHJlcXVlc3RlZCBvbiBjb21t
YW5kIGxpbmUsIGNoZWNrIGlmIGl0IGlzIHRoZXJlCmlmIFsgIiR7bm9kZX0iIF07IHRoZW4K
ICB1bnNldCBmb3VuZAogIGZvciBuIGluICR7a25vd25fbm9kZXN9OyBkbwogICAgWyAiJHtu
fSIgPSAiJHtub2RlfSIgXSAmJiBmb3VuZD0iWUVTIgogICAgWyAiJHtufSIgPSAiJHtub2Rl
fWhjaSIgXSAmJiBub2RlPSIke25vZGV9aGNpIiAmJiBmb3VuZD0iWUVTIgogIGRvbmUKICBb
ICIke2ZvdW5kfSIgXSB8fCBleGVyciAiTm9kZSAke25vZGV9IG5vdCBmb3VuZCIKZmkKClsg
IiR7bm9kZX0iIF0gJiYgbm9kZT0iLW4gJHtub2RlfSIKCndoaWxlICEgWyAiJHtiZGFkZHJl
c3Nlc30iIF07IGRvCiAgcmV0cnk9WCR7cmV0cnl9CiAgcHJpbnRmICJTY2FubmluZyBmb3Ig
bmV3IGJsdWV0b290aCBkZXZpY2VzIChBdHRlbXB0ICVkIG9mIDUpIC4uLiAiICR7I3JldHJ5
fQogIGJkYWRkcmVzc2VzPSQoIC91c3Ivc2Jpbi9oY2NvbnRyb2wgLU4gJHtub2RlfSBpbnF1
aXJ5IDI+L2Rldi9udWxsIHwgXAogICAgL3Vzci9iaW4vZ3JlcCAtbyAiQkRfQUREUjogLioi
IHwgL3Vzci9iaW4vY3V0IC1kICcgJyAtZiAyICkKCiAgIyBDb3VudCBlbnRyaWVzIGFuZCwg
aWYgYSBkZXZpY2Ugd2FzIHJlcXVlc3RlZCBvbiBjb21tYW5kIGxpbmUsCiAgIyB0cnkgdG8g
ZmluZCBpdAogIHVuc2V0IGZvdW5kIGNvdW50CiAgZm9yIGJkYWRkcmVzcyBpbiAke2JkYWRk
cmVzc2VzfTsgZG8KICAgIGNvdW50PVgke2NvdW50fQogICAgaWYgWyAiJHtiZGFkZHJlc3N9
IiA9ICIke2RldmljZX0iIF07IHRoZW4KICAgICAgZm91bmQ9WUVTCiAgICAgIGJkYWRkcmVz
c2VzPSIke2RldmljZX0iCiAgICAgIGNvdW50PVgKICAgICAgYnJlYWsKICAgIGZpCiAgZG9u
ZQoKICAjIElmIGRldmljZSB3YXMgcmVxdWVzdGVkIG9uIGNvbW1hbmQgbGluZSBidXQgaXMg
bm90IGZvdW5kLAogICMgb3Igbm8gZGV2aWNlcyBmb3VuZCBhdCBhbGwsIHJlc2NhbiB1bnRp
bCByZXRyeSBpcyBleGhhdXN0ZWQKICBpZiAhIFsgIiR7Zm91bmR9IiAtbyAiJHtjb3VudH0i
IC1hIC16ICIke2RldmljZX0iIF07IHRoZW4KICAgIHByaW50ZiAiZmFpbGVkLlxuIgogICAg
aWYgWyAiJHsjcmV0cnl9IiAtZXEgNSBdOyB0aGVuCiAgICAgIFsgIiR7ZGV2aWNlfSIgXSAm
JiBleGVyciAiRGV2aWNlICR7ZGV2aWNlfSBub3QgZm91bmQiCiAgICAgIGV4ZXJyICJObyBu
ZXcgYmx1ZXRvb3RoIGRldmljZXMgZm91bmQiCiAgICBmaQogICAgdW5zZXQgYmRhZGRyZXNz
ZXMKICAgIHNsZWVwIDIKICAgIGNvbnRpbnVlCiAgZmkKCiAgcHJpbnRmICJkb25lLlxuRm91
bmQgJWQgbmV3IGJsdWV0b290aCBkZXZpY2UocykgKHNjYW5uaW5nIGZvciBuYW1lcyk6XG4i
ICR7I2NvdW50fQoKICAjIExvb3BpbmcgYWdhaW4gZm9yIHRoZSBmYXN0ZXIgZmVlZGJhY2sK
ICB1bnNldCBjb3VudAogIGZvciBiZGFkZHJlc3MgaW4gJHtiZGFkZHJlc3Nlc307IGRvCiAg
ICBjb3VudD1YJHtjb3VudH0KICAgIGJkbmFtZT0kKCAvdXNyL2Jpbi9idGhvc3QgLWIgIiR7
YmRhZGRyZXNzfSIgMj4vZGV2L251bGwgKQogICAgZnJpZW5kbHluYW1lPSQoIC91c3Ivc2Jp
bi9oY2NvbnRyb2wgUmVtb3RlX05hbWVfUmVxdWVzdCAke2JkYWRkcmVzc30gMj4gL2Rldi9u
dWxsIHwgXAogICAgICAvdXNyL2Jpbi9ncmVwIC1vICJOYW1lOiAuKiIgfCAvdXNyL2Jpbi9j
dXQgLWQgJyAnIC1mIDItICkKCiAgICAjIHNkcGNvbnRyb2wgc2hvdWxkIGJlIGFibGUgdG8g
cHVsbCB2ZW5kb3IgYW5kIHByb2R1Y3QgaWQgdmlhIHNkcAogICAgcHJpbnRmICJbJTJkXSAl
c1x0XCIlc1wiICglcylcbiIgJHsjY291bnR9ICIke2JkYWRkcmVzc30iICIke2ZyaWVuZGx5
bmFtZX0iICIke2JkbmFtZX0iCgogICAgZXZhbCBiZGFkZHJlc3NfJHsjY291bnR9PVwke2Jk
YWRkcmVzc30KICAgIGV2YWwgYmRuYW1lXyR7I2NvdW50fT1cJHtiZG5hbWV9CiAgICBldmFs
IGZyaWVuZGx5bmFtZV8keyNjb3VudH09XCR7ZnJpZW5kbHluYW1lfQogIGRvbmUKCiAgIyBJ
ZiBhIGRldmljZSB3YXMgcHJlLXNlbGVjdGVkLCBkb24ndCBxdWVyeSB0aGUgdXNlcgogIFsg
IiR7ZGV2aWNlfSIgXSAmJiB0b3BhaXI9MSB8fCB1bnNldCB0b3BhaXIKCiAgIyBFdmVuIGlm
IG9ubHkgb25lIGRldmljZSB3YXMgZm91bmQsIHVzZXIgbWF5IGNob3NlIDAgdG8gcmVzY2Fu
CiAgd2hpbGUgISBbICIke3RvcGFpcn0iIF07IGRvCiAgICByZWFkIC1wICJTZWxlY3Qgd2hp
Y2ggZGV2aWNlIHlvdSB3YW50IHRvIHBhaXIgd2l0aCBbMS0keyNjb3VudH0sIDAgdG8gcmVz
Y2FuXTogIiB0b3BhaXIKICAgIGlmICEgWyAiJHt0b3BhaXJ9IiAtZ2UgMCAtYSAiJHt0b3Bh
aXJ9IiAtbGUgIiR7I2NvdW50fSIgXSAyPi9kZXYvbnVsbCA7IHRoZW4KICAgICAgcHJpbnRm
ICJWYWx1ZSBvdXQgb2YgcmFuZ2U6ICVzLlxuIiB7dG9wYWlyfQogICAgICB1bnNldCB0b3Bh
aXIKICAgIGZpCiAgZG9uZQoKICBbICIke3RvcGFpcn0iIC1lcSAiMCIgXSAmJiB1bnNldCBi
ZGFkZHJlc3NlcyByZXRyeQpkb25lCgpldmFsIGJkYWRkcmVzcz1cJHtiZGFkZHJlc3NfJHt0
b3BhaXJ9fQpldmFsIGJkbmFtZT1cJHtiZG5hbWVfJHt0b3BhaXJ9fQpldmFsIGZyaWVuZGx5
bmFtZT1cJHtmcmllbmRseW5hbWVfJHt0b3BhaXJ9fQoKIyBEbyB3ZSBuZWVkIHRvIGFkZCBh
biBlbnRyeSB0byAvZXRjL2JsdWV0b290aC9ob3N0cz8KaWYgISBbICIke2JkbmFtZX0iIF07
IHRoZW4KICBwcmludGYgIlxuQWRkaW5nIGRldmljZSAke2JkYWRkcmVzc30gdG8gL2V0Yy9i
bHVldG9vdGgvaG9zdHMuXG4iCgogIHdoaWxlICEgWyAiJHtiZG5hbWV9IiBdOyBkbwogICAg
cmVhZCAtcCAiUGxlYXNlIGVudGVyIGZyaWVuZGx5IG5hbWUuIFske2ZyaWVuZGx5bmFtZX1d
OiAiIFJFUExZCiAgICA6ICR7UkVQTFk6PSIke2ZyaWVuZGx5bmFtZX0ifQoKICAgIGlmIFsg
IiR7UkVQTFl9IiBdOyB0aGVuCiAgICAgICMgUmVtb3ZlIHdoaXRlIHNwYWNlIGFuZCBub24t
ZnJpZW5kbHkgY2hhcmFjdGVycwogICAgICBiZG5hbWU9JCggcHJpbnRmICIlcyIgIiR7UkVQ
TFl9IiB8IHRyIC1jICdbOmFsbnVtOl0tLC4nIF8gKQogICAgICBbICIke1JFUExZfSIgIT0g
IiR7YmRuYW1lfSIgXSAmJiBwcmludGYgIk5vdGljZTogVXNpbmcgc2FuaXRpemVkIG5hbWUg
XCIlc1wiIGluIC9ldGMvYmx1ZXRvb3RoL2hvc3RzLlxuIiAiJHtiZG5hbWV9IgogICAgZmkK
ICBkb25lCgogIHByaW50ZiAiJXNcdCVzXG4iICIke2JkYWRkcmVzc30iICIke2JkbmFtZX0i
ID4+IC9ldGMvYmx1ZXRvb3RoL2hvc3RzCmZpCgojIElmIHNjYW5uaW5nIGZvciB0aGUgbmFt
ZSBkaWQgbm90IHN1Y2NlZWQsIHJlc29ydCB0byBiZG5hbWUKOiAke2ZyaWVuZGx5bmFtZTo9
IiR7YmRuYW1lfSJ9CgojIG5vdyBvdmVyIHRvIGhjc2VjZAoKIyBTaW5jZSBoY3NlY2QgZG9l
cyBub3QgYWxsb3cgcXVlcnlpbmcgZm9yIGtub3duIGRldmljZXMsIHdlIG5lZWQgdG8KIyBj
aGVjayBmb3IgYmRhZGRyIGVudHJpZXMgbWFudWFsbHkuCiMKIyBBbHNvIHdlIGNhbiBub3Qg
cmVhbGx5IG1vZGlmeSB0aGUgUElOIGluIGFuIGV4aXN0aW5nIGVudHJ5LiBTbyB3ZQojIG5l
ZWQgdG8gcHJvbXB0IHRoZSB1c2VyIHRvIG1hbnVhbGx5IGRvIGl0IGFuZCByZXN0YXJ0IHRo
aXMgc2NyaXB0CmlmICEgL3Vzci9zYmluL3NlcnZpY2UgaGNzZWNkIGVuYWJsZWQ7IHRoZW4K
ICBwcmludGYgIlxuV2FybmluZzogaGNzZWNkIGlzIG5vdCBlbmFibGVkIG9uIHlvdXIgc3lz
dGVtLlxuVGhpcyBkYWVtb24gbWFuYWdlcyBwYXJpbmcgcmVxdWVzdHMuXG4iCiAgcmVhZCAt
cCAiRW5hYmxlIGhjc2VjZD8gW3llc106ICIgUkVQTFkKICBjYXNlICIke1JFUExZfSIgaW4g
bm98bnxOT3xOfE5vfG5PKSA7OyAqKSAvdXNyL3NiaW4vc3lzcmMgaGNzZWNkX2VuYWJsZT0i
WUVTIjs7IGVzYWMKZmkKc2VjZF9jb25maWc9JCggL3Vzci9zYmluL3N5c3JjIC1uIGhjc2Vj
ZF9jb25maWcgKQpzZWNkX2VudHJpZXM9JCggL3Vzci9iaW4vZ3JlcCAtRW8gImJkYWRkcltb
OnNwYWNlOl1dKygke2JkYWRkcmVzc318JHtiZG5hbWV9KSIgJHtzZWNkX2NvbmZpZ30gfCBh
d2sgJ3sgcHJpbnQgJDI7IH0nICkKCmlmIFsgIiR7c2VjZF9lbnRyaWVzfSIgXTsgdGhlbgog
IHByaW50ZiAiXG5XYXJuaW5nOiBBbiBlbnRyeSBmb3IgZGV2aWNlICVzIGlzIGFscmVhZHkg
cHJlc2VudCBpbiAlcy5cbiIgJHtzZWNkX2VudHJpZXN9ICR7c2VjZF9jb25maWd9CiAgcHJp
bnRmICJJZiB5b3Ugd2FudCB0byBtb2RpZml5IHBhaXJpbmcgaW5mb3JtYXRpb24sIGVkaXQg
dGhpcyBmaWxlIGFuZCBydW4gdGhlIGNvbW1hbmRcbiAgc2VydmljZSBoY3NlY2QgcmVzdGFy
dFxuIgogIHJlYWQgLXAgIkNvbnRpbnVlPyBbeWVzXTogIiBSRVBMWQogIGNhc2UgIiR7UkVQ
TFl9IiBpbiBub3xufE5PfE58Tm98bk8pIGV4aXQ7OyBlc2FjCmVsc2UKICBwcmludGYgIlxu
V3JpdGluZyBwYWlyaW5nIGluZm9ybWF0aW9uIGRlc2NyaXB0aW9uIGJsb2NrIHRvICVzLlxu
IiAke3NlY2RfY29uZmlnfQogIHByaW50ZiAiKE5vdGljZTogVG8gZ2V0IFBJTiwgeW91IG1p
Z2h0IHdhbnQgdG8gcHV0IGRldmljZSBpbiBwYWlyaW5nIG1vZGUsIGZpcnN0LilcbiIKICBy
ZWFkIC1wICJFbnRlciBQSU4gW25vcGluXTogIiBwaW4KICBbICIke3Bpbn0iIF0gJiYgcGlu
PVwiIiR7cGlufSJcIiB8fCBwaW49Im5vcGluIgoKICAjIFdyaXRlIG91dCBuZXcgaGNzZWNk
IGNvbmZpZyBibG9jawogIHByaW50ZiAiXG5kZXZpY2Uge1xuXHRiZGFkZHJcdCVzO1xuXHRu
YW1lXHRcIiVzXCI7XG5cdGtleVx0bm9rZXlcO1xuXHRwaW5cdCVzXDtcbn1cbiIgXAogICAg
IiR7YmRhZGRyZXNzfSIgIiR7ZnJpZW5kbHluYW1lfSIgIiR7cGlufSIgPj4gJHtzZWNkX2Nv
bmZpZ30KCiAgIyAuLi4gYW5kIG1ha2UgZGFlbW9uIHJlbG9hZCBjb25maWcsIFRPRE86IGhj
c2VjZCBzaG91bGQgcHJvdmlkZSBhIHJlbG9hZCBob29rCiAgL3Vzci9zYmluL3NlcnZpY2Ug
aGNzZWNkIHJlc3RhcnQKCiAgIyBUT0RPOiB3ZSBzaG91bGQgY2hlY2sgaWYgaGNzZWNkIHN1
Y2NlZWRlZCBwYWlyaW5nIGFuZCByZXZlcnQgdG8gYW4gb2xkIHZlcnNpb24KICAjIG9mIGhj
c2VjZC5jb25mIHNvIHdlIGNhbiB1bmRvIGFkZGluZyB0aGUgYmxvY2sgYWJvdmUgYW5kIHJl
dHJ5IHdpdGggYSBuZXcgUElOCiAgIyBhbHNvLCBpZiB0aGVyZSdzIGEgd2F5IHRvIGZvcmNl
IGRldmljZXMgdG8gcmUtcGFpciwgdHJ5IHRoaXMKZmkKCiMgbm93IGNoZWNrIGZvciBzcGVj
aWZpYyBzZXJ2aWNlcyB0byBiZSBwcm92aWRlZCBieSB0aGUgZGV2aWNlCiMgZmlyc3QgdXA6
IEhJRAoKaWYgL3Vzci9zYmluL3NkcGNvbnRyb2wgLWEgIiR7YmRhZGRyZXNzfSIgc2VhcmNo
IEhJRCB8IFwKICAgL3Vzci9iaW4vZ3JlcCAtcSAiXlJlY29yZCBIYW5kbGU6ICI7IHRoZW4K
CiAgcHJpbnRmICJcblRoaXMgZGV2aWNlIHByb3ZpZGVzIGh1bWFuIGludGVyZmFjZSBkZXZp
Y2Ugc2VydmljZXMuXG4iCiAgcmVhZCAtcCAiRG8geW91IHdhbnQgdG8gc2V0IGl0IHVwPyBb
eWVzXTogIiBSRVBMWQogIGNhc2UgIiR7UkVQTFl9IiBpbiBub3xufE5PfE58Tm98bk8pIDs7
CiAgKikKICAgIGlmICEgL3Vzci9zYmluL3NlcnZpY2UgYnRoaWRkIGVuYWJsZWQ7IHRoZW4K
ICAgICAgcHJpbnRmICJcbldhcm5pbmc6IGJ0aGlkZCBpcyBub3QgZW5hYmxlZCBvbiB5b3Vy
IHN5c3RlbS5cblRoaXMgZGFlbW9uIG1hbmFnZXMgYmx1ZXRvb3RoIEhJRCBkZXZpY2VzLlxu
IgogICAgICByZWFkIC1wICJFbmFibGUgYnRoaWRkPyBbeWVzXTogIiBSRVBMWQogICAgICBj
YXNlICIke1JFUExZfSIgaW4gbm98bnxOT3xOfE5vfG5PKSA7OyAqKSAvdXNyL3NiaW4vc3lz
cmMgYnRoaWRkX2VuYWJsZT0iWUVTIjs7IGVzYWMKICAgIGZpCgogICAgIyBDaGVjayBpZiBi
dGhpZGQgYWxyZWFkeSBrbm93cyBhYm91dCB0aGlzIGRldmljZQogICAgYnRoaWRkX2tub3du
PSQoIC91c3Ivc2Jpbi9idGhpZGNvbnRyb2wgLWEgIiR7YmRhZGRyZXNzfSIga25vd24gKQog
ICAgaWYgWyAiJHtidGhpZGRfa25vd259IiBdOyB0aGVuCiAgICAgIHByaW50ZiAiTm90aWNl
OiBEZXZpY2UgJXMgYWxyZWFkeSBrbm93biB0byBidGhpZGQuXG4iICIke2JkYWRkcmVzc30i
CiAgICBlbHNlCiAgICAgIGJ0aGlkZF9jb25maWc9JCggL3Vzci9zYmluL3N5c3JjIC1uIGJ0
aGlkZF9jb25maWcgKQogICAgICBwcmludGYgIldyaXRpbmcgSElEIGRlc2NyaXB0b3IgYmxv
Y2sgdG8gJXMgLi4uICIgIiR7YnRoaWRkX2NvbmZpZ30iCiAgICAgIC91c3Ivc2Jpbi9idGhp
ZGNvbnRyb2wgLWEgIiR7YmRhZGRyZXNzfSIgcXVlcnkgPj4gIiR7YnRoaWRkX2NvbmZpZ30i
CgogICAgICAjIFJlLXJlYWQgY29uZmlnIHRvIHNlZSBpZiB3ZSBzdWNjZWVkZWQgYWRkaW5n
IHRoZSBkZXZpY2UKICAgICAgYnRoaWRkX2tub3duPSQoIC91c3Ivc2Jpbi9idGhpZGNvbnRy
b2wgLWEgIiR7YmRhZGRyZXNzfSIga25vd24gKQogICAgICBpZiAhIFsgIiR7YnRoaWRkX2tu
b3dufSIgXTsgdGhlbgogICAgICAgIHByaW50ZiAiZmFpbGVkLlxuIgogICAgICBlbHNlCiAg
ICAgICAgcHJpbnRmICJzdWNjZXNzLlxuSW4gb3JkZXIgdG8gcmUtcmVhZCBpdHMgY29uZmln
LCBidGhpZGQgbXVzdCBiZSByZXN0YXJ0ZWQuXG4iCiAgICAgICAgcHJpbnRmICJXYXJuaW5n
OiBJZiB5b3UncmUgdXNpbmcgYSBibHVldG9vdGgga2V5Ym9hcmQsIGNvbm5lY3Rpb24gbWF5
IGJlIGxvc3QuXG4iCiAgICAgICAgcHJpbnRmICJZb3UgbWF5IG1hbnVhbGx5IHJlc3RhcnQg
aXQgbGF0ZXIgdXNpbmdcbiAgc2VydmljZSBidGhpZGQgcmVzdGFydFxuIgogICAgICAgIHJl
YWQgLXAgIlJlc3RhcnQgYnRoaWRkIG5vdz8gW3llc106ICIgUkVQTFkKICAgICAgICBjYXNl
ICIke1JFUExZfSIgaW4gbm98bnxOT3xOfE5vfG5PKSA7OyAqKSAvdXNyL3NiaW4vc2Vydmlj
ZSBidGhpZGQgcmVzdGFydDs7IGVzYWMKICAgICAgZmkKICAgIGZpCiAgOzsKICBlc2FjCmZp
Cgp9CgojIEFmdGVyIGZ1bmN0aW9uIGRlZmluaXRpb25zLCBtYWluKCkgY2FuIHVzZSB0aGVt
Cm1haW4gIiRAIgoKZXhpdAoKIyBUT0RPCiMgKiBJZiBkZXZpY2UgaXMgYSBrZXlib2FyZCwg
b2ZmZXIgYSB0ZXh0IGVudHJ5IHRlc3QgZmllbGQgYW5kIGlmIGl0IGRvZXMKIyAgIG5vdCBz
dWNjZWVkLCBsZWF2ZSBzb21lIGNsdWVzIGZvciBkZWJ1Z2dpbmcgKGkuZS4gaWYgdGhlIG5v
ZGUgcmVzcG9uZHMKIyAgIHRvIHBpbmdzLCBtYXliZSBzd2l0Y2gga2V5Ym9hcmQgb24vb2Zm
LCBldGMpCiMgKiBTYW1lIGlmIGRldmljZSBpcyBhIG1vdXNlLCBpLmUuIGhleGR1bXAgL2Rl
di9zeXNtb3VzZS4KIyAqIElmIGRldmljZSBvZmZlcnMgRFVOIHByb2ZpbGVzLCBhc2sgdGhl
IHVzZXIgaWYgYW4gZW50cnkgaW4KIyAgIC9ldGMvcHBwL3BwcC5jb25mIHNob3VsZCBiZSBj
cmVhdGVkCiMgKiBJZiBPUFVTSCBvciBTUFAgaXMgb2ZmZXJlZCwgcmVmZXIgdG8gdGhlIHJl
c3BlY3RpdmUgbWFuIHBhZ2VzIHRvIGdpdmUKIyAgIHNvbWUgY2x1ZXMgaG93IHRvIGNvbnRp
bnVlCgo=
--------------000805080601020205030608--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?56072A53.4010005>