* [Bluez-devel] BCM2035 over UART on the E680I @ 2005-09-18 13:44 Ho Ming Shun 2005-09-19 9:25 ` Oliver 2005-10-03 8:47 ` [Bluez-devel] [SOLVED] " Ho Ming Shun 0 siblings, 2 replies; 15+ messages in thread From: Ho Ming Shun @ 2005-09-18 13:44 UTC (permalink / raw) To: Bluez-devel Hi, I'm part of a community of linux enthusiasts trying to hack the Motorola E680I phone. Its a based on an Intel PXA270 running MontaVista Linux on their 2.4.20 kernel. I've been trying to get BlueZ running on it. The original Bluetooth stack implemented in the firmware is in one userspace-only app, which talks to ttyS1. So no way to extend functionality, which badly needs extending. The phone only publishes one service: Object Push. No way to browse or be browsed, no HID, nothing. From strace output, it seems to load some kind of firmware into the phone using a vendor-specific HCI command: write(3, "\x01\x2e\xfc\x00", 4) = 4 read(3, "\x04\x0e\x04\x01\x2e\xfc\x00", 8) = 7 read(3, "41", 8) = 2 write(3, ":03000000028EB0BD", 17) = 17 read(3, ".", 8) = 1 write(3, ":0B1109008FE18DE2E4F5E375E30122C"..., 33) = 33 . . . Then it programs the Bluetooth address in using another vendor-specific command (address is 00:12:8a:2d:3d:3e) write(3, "\x01\x01\xfc\x06\x3e\x3d\x2d\x8a\x12\x00", 10) = 10 read(3, "\x04\x0e\x04\x01\x01\xfc\x00", 8) = 7 I've managed to duplicate this whole process, and get the hci_uart driver attached to ttyS1. By default when first initialised, the Bluetooth name is "Broadcom BCM2035". However, the problem comes when BlueZ requests the Bluetooth address back from the chip: it will reply with 00:00:00:00:00:00. Seems like its not a problem unheard of: http://www.linuxquestions.org/questions/history/341892 l2ping and hcitool scan works despite BlueZ not knowing the correct local address. Will this cause any problems BlueZ functionality or other applications? Is this a sign that the chip is somehow configured wrongly? Is this a common problem for this chip? What are the known pitfalls and bugs (besides this one) for BCM2035? ------------------------------------------------------- SF.Net email is sponsored by: Tame your development challenges with Apache's Geronimo App Server. Download it for free - -and be entered to win a 42" plasma tv or your very own Sony(tm)PSP. Click here to play: http://sourceforge.net/geronimo.php _______________________________________________ Bluez-devel mailing list Bluez-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/bluez-devel ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [Bluez-devel] BCM2035 over UART on the E680I 2005-09-18 13:44 [Bluez-devel] BCM2035 over UART on the E680I Ho Ming Shun @ 2005-09-19 9:25 ` Oliver 2005-09-19 10:22 ` Ho Ming Shun 2005-09-20 11:53 ` Marcel Holtmann 2005-10-03 8:47 ` [Bluez-devel] [SOLVED] " Ho Ming Shun 1 sibling, 2 replies; 15+ messages in thread From: Oliver @ 2005-09-19 9:25 UTC (permalink / raw) To: bluez-devel Ho, > However, the problem comes when BlueZ requests the Bluetooth address > back from the chip: it will reply with 00:00:00:00:00:00. Seems like its > not a problem unheard of: > http://www.linuxquestions.org/questions/history/341892 > l2ping and hcitool scan works despite BlueZ not knowing the correct > local address. It is not a BlueZ problem but a device itself, with the BlueZ stack the chip uses to forget its BD_ADDR. > Will this cause any problems BlueZ functionality or other applications? AFAIK for example another devices could not connect to it, moreover the fact that a device identifies itself as 00:00:00:00:00:00. > Is this a sign that the chip is somehow configured wrongly? Looks like, but I fear its too late for the the device. Would help a lot if it can take again a valid BD_ADDR. The HCI_USB driver behaves different for this device it casts a reset hci command on it, before the intialitation commands. May there is a point to look at but you are talking over UART... > Is this a common problem for this chip? I had this problem, I could not make it get its previous BD_ADDR thanks, ______________________________________________ Renovamos el Correo Yahoo! Nuevos servicios, más seguridad http://correo.yahoo.es ------------------------------------------------------- SF.Net email is sponsored by: Tame your development challenges with Apache's Geronimo App Server. Download it for free - -and be entered to win a 42" plasma tv or your very own Sony(tm)PSP. Click here to play: http://sourceforge.net/geronimo.php _______________________________________________ Bluez-devel mailing list Bluez-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/bluez-devel ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [Bluez-devel] BCM2035 over UART on the E680I 2005-09-19 9:25 ` Oliver @ 2005-09-19 10:22 ` Ho Ming Shun 2005-09-19 14:50 ` Oliver 2005-09-20 11:53 ` Marcel Holtmann 1 sibling, 1 reply; 15+ messages in thread From: Ho Ming Shun @ 2005-09-19 10:22 UTC (permalink / raw) To: bluez-devel Oliver wrote: >Ho, > > =20 > >>However, the problem comes when BlueZ requests the Bluetooth address=20 >>back from the chip: it will reply with 00:00:00:00:00:00. Seems like it= s=20 >>not a problem unheard of:=20 >>http://www.linuxquestions.org/questions/history/341892 >>l2ping and hcitool scan works despite BlueZ not knowing the correct=20 >>local address. >> =20 >> > >It is not a BlueZ problem but a device itself, with the BlueZ stack the=20 >chip uses to forget its BD_ADDR. > =20 > I am thinking more along the lines of "You just told me my BD_ADDR, why=20 are you asking for it now?" > =20 > >>Will this cause any problems BlueZ functionality or other applications? >> =20 >> > >AFAIK for example another devices could not connect to it, moreover the=20 >fact that a device identifies itself as 00:00:00:00:00:00. > =20 > However, like I said, l2ping works. sdptool also works fine. Perhaps it=20 transmits packets with the correct address, just that it would not tell=20 BlueZ its BD_ADDR? > =20 > >>Is this a sign that the chip is somehow configured wrongly? >> =20 >> > >Looks like, but I fear its too late for the the device. Would help a lot= if=20 >it can take again a valid BD_ADDR. The HCI_USB driver behaves different = for=20 >this device it casts a reset hci command on it, before the intialitation= =20 >commands. May there is a point to look at but you are talking over UART.= .. > =20 > Too late? You mean it will be stuck with this BD_ADDR? > =20 > >>Is this a common problem for this chip? >> =20 >> > >I had this problem, I could not make it get its previous BD_ADDR > >thanks, > > =09 >______________________________________________=20 >Renovamos el Correo Yahoo!=20 >Nuevos servicios, m=E1s seguridad=20 >http://correo.yahoo.es > > > >------------------------------------------------------- >SF.Net email is sponsored by: >Tame your development challenges with Apache's Geronimo App Server.=20 >Download it for free - -and be entered to win a 42" plasma tv or your ve= ry >own Sony(tm)PSP. Click here to play: http://sourceforge.net/geronimo.ph= p >_______________________________________________ >Bluez-devel mailing list >Bluez-devel@lists.sourceforge.net >https://lists.sourceforge.net/lists/listinfo/bluez-devel > > =20 > ------------------------------------------------------- SF.Net email is sponsored by: Tame your development challenges with Apache's Geronimo App Server. Download it for free - -and be entered to win a 42" plasma tv or your very own Sony(tm)PSP. Click here to play: http://sourceforge.net/geronimo.php _______________________________________________ Bluez-devel mailing list Bluez-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/bluez-devel ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [Bluez-devel] BCM2035 over UART on the E680I 2005-09-19 10:22 ` Ho Ming Shun @ 2005-09-19 14:50 ` Oliver 0 siblings, 0 replies; 15+ messages in thread From: Oliver @ 2005-09-19 14:50 UTC (permalink / raw) To: bluez-devel Ho, > I am thinking more along the lines of "You just told me my BD_ADDR, why > are you asking for it now?" I dont understand you as well in here... :P ?? i have not asked > However, like I said, l2ping works. sdptool also works fine. Perhaps it > transmits packets with the correct address, just that it would not tell > BlueZ its BD_ADDR? I only did research on this problem over the HCI layer, but while the BCM2035 initiates those l2cap/sdp connections, as it is needed the remote BD_ADDR not ours(phantom one) what you say is possible. On other hand no other device should be albe to "l2ping" you and in general connect you. As well as you should not be visible to remote inquiry processes. > Too late? You mean it will be stuck with this BD_ADDR? hmmmm I meant, device dead, or with a serious handicap if sounds better as, it has no BD_ADDR. thanks, ______________________________________________ Renovamos el Correo Yahoo! Nuevos servicios, más seguridad http://correo.yahoo.es ------------------------------------------------------- SF.Net email is sponsored by: Tame your development challenges with Apache's Geronimo App Server. Download it for free - -and be entered to win a 42" plasma tv or your very own Sony(tm)PSP. Click here to play: http://sourceforge.net/geronimo.php _______________________________________________ Bluez-devel mailing list Bluez-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/bluez-devel ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [Bluez-devel] BCM2035 over UART on the E680I 2005-09-19 9:25 ` Oliver 2005-09-19 10:22 ` Ho Ming Shun @ 2005-09-20 11:53 ` Marcel Holtmann 2005-09-23 11:41 ` Ho Ming Shun 1 sibling, 1 reply; 15+ messages in thread From: Marcel Holtmann @ 2005-09-20 11:53 UTC (permalink / raw) To: bluez-devel Hi guys, > > Is this a sign that the chip is somehow configured wrongly? > > Looks like, but I fear its too late for the the device. Would help a lot if > it can take again a valid BD_ADDR. The HCI_USB driver behaves different for > this device it casts a reset hci command on it, before the intialitation > commands. May there is a point to look at but you are talking over UART... if it is a ROM chip, you may need to call HCI_Reset to establish the new configuration. For the hci_uart driver you can load it with "reset=1" to tell the Bluetooth core to always send a reset command first. Regards Marcel ------------------------------------------------------- SF.Net email is sponsored by: Tame your development challenges with Apache's Geronimo App Server. Download it for free - -and be entered to win a 42" plasma tv or your very own Sony(tm)PSP. Click here to play: http://sourceforge.net/geronimo.php _______________________________________________ Bluez-devel mailing list Bluez-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/bluez-devel ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [Bluez-devel] BCM2035 over UART on the E680I 2005-09-20 11:53 ` Marcel Holtmann @ 2005-09-23 11:41 ` Ho Ming Shun 2005-09-23 13:53 ` Marcel Holtmann 0 siblings, 1 reply; 15+ messages in thread From: Ho Ming Shun @ 2005-09-23 11:41 UTC (permalink / raw) To: bluez-devel Marcel Holtmann wrote: >Hi guys, > > > >>>Is this a sign that the chip is somehow configured wrongly? >>> >>> >>Looks like, but I fear its too late for the the device. Would help a lot if >>it can take again a valid BD_ADDR. The HCI_USB driver behaves different for >>this device it casts a reset hci command on it, before the intialitation >>commands. May there is a point to look at but you are talking over UART... >> >> > >if it is a ROM chip, you may need to call HCI_Reset to establish the new >configuration. For the hci_uart driver you can load it with "reset=1" to >tell the Bluetooth core to always send a reset command first. > > I've looked through bluez sources for 2.6.12 and found the "reset" parameter in the hci_uart driver. However, I need to use the MontaVista kernel on this phone. Nevertheless I have modified hci_uart driver to set the appropriate quirks flag, and verified with hcidump that it sent a reset on "hciconfig up". However this still does not work. The phone's native stack though, still works fine. Unlike bluez, it does not read the the BD_ADDR from the chip, which makes sense because it programs the address into the chip... >Regards > >Marcel > > > > >------------------------------------------------------- >SF.Net email is sponsored by: >Tame your development challenges with Apache's Geronimo App Server. >Download it for free - -and be entered to win a 42" plasma tv or your very >own Sony(tm)PSP. Click here to play: http://sourceforge.net/geronimo.php >_______________________________________________ >Bluez-devel mailing list >Bluez-devel@lists.sourceforge.net >https://lists.sourceforge.net/lists/listinfo/bluez-devel > > > ------------------------------------------------------- SF.Net email is sponsored by: Tame your development challenges with Apache's Geronimo App Server. Download it for free - -and be entered to win a 42" plasma tv or your very own Sony(tm)PSP. Click here to play: http://sourceforge.net/geronimo.php _______________________________________________ Bluez-devel mailing list Bluez-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/bluez-devel ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [Bluez-devel] BCM2035 over UART on the E680I 2005-09-23 11:41 ` Ho Ming Shun @ 2005-09-23 13:53 ` Marcel Holtmann 2005-09-23 13:07 ` Ho Ming Shun 0 siblings, 1 reply; 15+ messages in thread From: Marcel Holtmann @ 2005-09-23 13:53 UTC (permalink / raw) To: bluez-devel Hi, > >if it is a ROM chip, you may need to call HCI_Reset to establish the new > >configuration. For the hci_uart driver you can load it with "reset=1" to > >tell the Bluetooth core to always send a reset command first. > > > > > I've looked through bluez sources for 2.6.12 and found the "reset" > parameter in the hci_uart driver. However, I need to use the MontaVista > kernel on this phone. Nevertheless I have modified hci_uart driver to > set the appropriate quirks flag, and verified with hcidump that it sent > a reset on "hciconfig up". However this still does not work. > > The phone's native stack though, still works fine. Unlike bluez, it does > not read the the BD_ADDR from the chip, which makes sense because it > programs the address into the chip... there exists no backport for the reset quirks for any 2.4 kernels. Regards Marcel ------------------------------------------------------- SF.Net email is sponsored by: Tame your development challenges with Apache's Geronimo App Server. Download it for free - -and be entered to win a 42" plasma tv or your very own Sony(tm)PSP. Click here to play: http://sourceforge.net/geronimo.php _______________________________________________ Bluez-devel mailing list Bluez-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/bluez-devel ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [Bluez-devel] BCM2035 over UART on the E680I 2005-09-23 13:53 ` Marcel Holtmann @ 2005-09-23 13:07 ` Ho Ming Shun 2005-09-23 14:28 ` Marcel Holtmann 0 siblings, 1 reply; 15+ messages in thread From: Ho Ming Shun @ 2005-09-23 13:07 UTC (permalink / raw) To: bluez-devel Marcel Holtmann wrote: >Hi, > > > >>>if it is a ROM chip, you may need to call HCI_Reset to establish the new >>>configuration. For the hci_uart driver you can load it with "reset=1" to >>>tell the Bluetooth core to always send a reset command first. >>> >>> >>> >>> >>I've looked through bluez sources for 2.6.12 and found the "reset" >>parameter in the hci_uart driver. However, I need to use the MontaVista >>kernel on this phone. Nevertheless I have modified hci_uart driver to >>set the appropriate quirks flag, and verified with hcidump that it sent >>a reset on "hciconfig up". However this still does not work. >> >>The phone's native stack though, still works fine. Unlike bluez, it does >>not read the the BD_ADDR from the chip, which makes sense because it >>programs the address into the chip... >> >> > >there exists no backport for the reset quirks for any 2.4 kernels. > > I patched the kernel with http://www.holtmann.org/linux/kernel/patch-2.4.20-mh18.gz and there is test for HCI_QUIRK_RESET_ON_INIT in hci_core.c, although the surrounding has changed a bit since then. So all I did was to add the flag to hci_ldisc.c, and hcidump verified a reset was issued. >Regards > >Marcel > > > > >------------------------------------------------------- >SF.Net email is sponsored by: >Tame your development challenges with Apache's Geronimo App Server. >Download it for free - -and be entered to win a 42" plasma tv or your very >own Sony(tm)PSP. Click here to play: http://sourceforge.net/geronimo.php >_______________________________________________ >Bluez-devel mailing list >Bluez-devel@lists.sourceforge.net >https://lists.sourceforge.net/lists/listinfo/bluez-devel > > > ------------------------------------------------------- SF.Net email is sponsored by: Tame your development challenges with Apache's Geronimo App Server. Download it for free - -and be entered to win a 42" plasma tv or your very own Sony(tm)PSP. Click here to play: http://sourceforge.net/geronimo.php _______________________________________________ Bluez-devel mailing list Bluez-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/bluez-devel ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [Bluez-devel] BCM2035 over UART on the E680I 2005-09-23 13:07 ` Ho Ming Shun @ 2005-09-23 14:28 ` Marcel Holtmann 2005-09-24 0:22 ` Ho Ming Shun 2005-09-24 7:28 ` Ho Ming Shun 0 siblings, 2 replies; 15+ messages in thread From: Marcel Holtmann @ 2005-09-23 14:28 UTC (permalink / raw) To: bluez-devel Hi, > I patched the kernel with > http://www.holtmann.org/linux/kernel/patch-2.4.20-mh18.gz and there is > test for HCI_QUIRK_RESET_ON_INIT in hci_core.c, although the > surrounding has changed a bit since then. So all I did was to add the > flag to hci_ldisc.c, and hcidump verified a reset was issued. I don't support the 2.4 kernel anymore and I don't have the hardware to verify if this should work anyhow. I need the test hardware for it or you need to send a full decoded strace to see what they are doing. Regards Marcel ------------------------------------------------------- SF.Net email is sponsored by: Tame your development challenges with Apache's Geronimo App Server. Download it for free - -and be entered to win a 42" plasma tv or your very own Sony(tm)PSP. Click here to play: http://sourceforge.net/geronimo.php _______________________________________________ Bluez-devel mailing list Bluez-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/bluez-devel ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [Bluez-devel] BCM2035 over UART on the E680I 2005-09-23 14:28 ` Marcel Holtmann @ 2005-09-24 0:22 ` Ho Ming Shun 2005-09-24 7:28 ` Ho Ming Shun 1 sibling, 0 replies; 15+ messages in thread From: Ho Ming Shun @ 2005-09-24 0:22 UTC (permalink / raw) To: bluez-devel [-- Attachment #1: Type: text/plain, Size: 1010 bytes --] Marcel Holtmann wrote: >I don't support the 2.4 kernel anymore and I don't have the hardware to >verify if this should work anyhow. I need the test hardware for it or >you need to send a full decoded strace to see what they are doing. > >Regards > >Marcel > > I've just prepared the straces (filtered to only contain read/write to ttyS1). dload.txt -- small executable which the native stack shells out to. Note the command line args contains the BD_ADDR. ezx_bt.txt -- the stack itself . Multi-threaded user-space application with a reader and writer thread talking to ttyS1. dload will be called first to initialize the chip (load firmware, set BD_ADDR), then ezx_bt will open ttyS1 and continue the initialization. This is a trace of the stack from the moment "Turn on Bluetooth" was pressed till "Bluetooth turned on" is displayed. I have also hacked up a simple perl script to turn strace output into hcidump files. dload.dump and ezx_bt.dump are the files converted from the strace output. [-- Attachment #2: dload.txt --] [-- Type: text/plain, Size: 24632 bytes --] 425 execve("/usr/SYSbt/dload", ["/usr/SYSbt/dload", "/dev/ttyS1", "1", "460800", "00128a2d3d3e", "0"], [/* 46 vars */]) = 0 425 write(3, "\x01\x03\x0c\x00", 4) = 4 425 read(3, "\x04\x0e\x04\x01\x03\x0c\x00", 8) = 7 425 write(3, "\x01\x18\xfc\x02\x55\xff", 6) = 6 425 read(3, <unfinished ...> 425 <... read resumed> "\x04\x0e\x04\x01\x18\xfc\x00", 8) = 7 425 write(3, "\x01\x2e\xfc\x00", 4) = 4 425 read(3, <unfinished ...> 425 <... read resumed> "\x04\x0e\x04\x01\x2e\xfc\x00", 8) = 7 425 read(3, "41", 8) = 2 425 write(3, ":03000000028EB0BD", 17) = 17 425 read(3, ".", 8) = 1 425 write(3, ":0B1109008FE18DE2E4F5E375E30122C5", 33) = 33 425 read(3, ".", 8) = 1 425 write(3, ":101075008F15D3E515648094894008E5152437FF5D", 43) = 43 425 read(3, ".", 8) = 1 425 write(3, ":0C1085000290CEE5152430FF1290CE2220", 35) = 35 425 read(3, ".", 8) = 1 425 write(3, ":021058008F13F4", 15) = 15 425 read(3, ".", 8) = 1 425 write(3, ":10105A00E5137804A2E713D8FB540FF514FF129096", 43) = 43 425 read(3, ".", 8) = 1 425 write(3, ":0B106A0075E513540FF514FF0290759C", 33) = 33 425 read(3, ".", 8) = 1 425 write(3, ":07117300907C187401F022CA", 25) = 25 425 read(3, ".", 8) = 1 425 write(3, ":100FC2001291328F1374D02513F513D3940940066E", 43) = 43 425 read(3, ".", 8) = 1 425 write(3, ":100FD20074F92513F51312913274D02FFFD39409AB", 43) = 43 425 read(3, ".", 8) = 1 425 write(3, ":0F0FE200400474F92FFFE513C454F04FF513FFCB", 41) = 41 425 read(3, ".", 8) = 1 425 write(3, ":010FF10022DD", 13) = 13 425 read(3, ".", 8) = 1 425 write(3, ":100F8100128FC27519008F1A851A1BE51A751A007E", 43) = 43 425 read(3, ".", 8) = 1 425 write(3, ":100F9100F519128FC2EF421AE4E51A251BF51B124F", 43) = 43 425 read(3, ".", 8) = 1 425 write(3, ":100FA1008FC27517008F18EF251BF51BE5187518F3", 43) = 43 425 read(3, ".", 8) = 1 425 write(3, ":100FB10000F517128FC2EF4218E4E518251BF51B47", 43) = 43 425 read(3, ".", 8) = 1 425 write(3, ":010FC100220D", 13) = 13 425 read(3, ".", 8) = 1 425 write(3, ":100EB000E4F5101291730510E510C394FA40F41292", 43) = 43 425 read(3, ".", 8) = 1 425 write(3, ":100EC0009091129132EF24A67003028F55241A706C", 43) = 43 425 read(3, ".", 8) = 1 425 write(3, ":100ED000F1E4F511F512F510128F81E510651A7025", 43) = 43 425 read(3, ".", 8) = 1 425 write(3, ":100EE00002E5196024128FC274902510F582E43453", 43) = 43 425 read(3, ".", 8) = 1 425 write(3, ":100EF0000EF583EFF074902510F582E4340EF5833F", 43) = 43 425 read(3, ".", 8) = 1 425 write(3, ":100F0000E0251BF51B051080D2128FC2EF251BF5C3", 43) = 43 425 read(3, ".", 8) = 1 425 write(3, ":100F10001B70AF7F401290CEE4F510AF107E00C37F", 43) = 43 425 read(3, ".", 8) = 1 425 write(3, ":100F2000EF951AEE9519502574902510F582E4344A", 43) = 43 425 read(3, ".", 8) = 1 425 write(3, ":100F30000EF583E0FDE5122518CBE5113517CB2F13", 43) = 43 425 read(3, ".", 8) = 1 425 write(3, ":100F4000FFEE3B8F82F583EDF0051080CE7F01121E", 43) = 43 425 read(3, ".", 8) = 1 425 write(3, ":100F50009058028EC21291737D0D7F381291097DD7", 43) = 43 425 read(3, ".", 8) = 1 425 write(3, ":100F6000E30F1291097D400F1291097D510F1291EB", 43) = 43 425 read(3, ".", 8) = 1 425 write(3, ":100F700009E51DB402077DC17F071290DE12903390", 43) = 43 425 read(3, ".", 8) = 1 425 write(3, ":010F8000224E", 13) = 13 425 read(3, ".", 8) = 1 425 write(3, ":0A111F00907F84EFF0A3F0A3F0220C", 31) = 31 425 read(3, ".", 8) = 1 425 write(3, ":10109100E4F51C1290211291737F0212911F12909C", 43) = 43 425 read(3, ".", 8) = 1 425 write(3, ":0B10A100ED50F3751D02128FF2D322F8", 33) = 33 425 read(3, ".", 8) = 1 425 write(3, ":0F10DE00907F80EFF0A3EDF0A37401F0E4F02217", 41) = 41 425 read(3, ".", 8) = 1 425 write(3, ":100FF200E4FD7F041290DE7D687F061290DE7DE1C3", 43) = 43 425 read(3, ".", 8) = 1 425 write(3, ":101002000F1290DE7D607F0B1290DE7D707F0D12DD", 43) = 43 425 read(3, ".", 8) = 1 425 write(3, ":0810120090DE7D201F0290DE3C", 27) = 27 425 read(3, ".", 8) = 1 425 write(3, ":1010AC00907F80EFF0907F827402F0907F81E0FF60", 43) = 43 425 read(3, ".", 8) = 1 425 write(3, ":0110BC002211", 13) = 13 425 read(3, ".", 8) = 1 425 write(3, ":0E10ED007F0A1290ACEF20E003D38001C322F3", 39) = 39 425 read(3, ".", 8) = 1 425 write(3, ":091129001290ED500312917322A3", 29) = 29 425 read(3, ".", 8) = 1 425 write(3, ":1010BD001291297F091290ACEF30E203D38001C366", 43) = 43 425 read(3, ".", 8) = 1 425 write(3, ":0110CD002200", 13) = 13 425 read(3, ".", 8) = 1 425 write(3, ":0E10FB008F161290BD50FB907F87E516F022F5", 39) = 39 425 read(3, ".", 8) = 1 425 write(3, ":10103A00129129907FA0E0FFEF5408FF907FA0EF64", 43) = 43 425 read(3, ".", 8) = 1 425 write(3, ":0E104A00F0907FA0E0FFEF30E302C322D3223C", 39) = 39 425 read(3, ".", 8) = 1 425 write(3, ":0B11140012903A50FB907F87E0FF2212", 33) = 33 425 read(3, ".", 8) = 1 425 write(3, ":09113200E51DB402031291142220", 29) = 29 425 read(3, ".", 8) = 1 425 write(3, ":1010CE008F1E851E1EE51DB40205AF1E1290FB225B", 43) = 43 425 read(3, ".", 8) = 1 425 write(3, ":10101A00F0A308B805FA22E4F8907F9C1412901AFB", 43) = 43 425 read(3, ".", 8) = 1 425 write(3, ":10102A00E4907FA5F812901A227F007E6002045095", 43) = 43 425 read(3, ".", 8) = 1 425 write(3, ":10114000758600900000ED2582F582EC3583F583ED", 43) = 43 425 read(3, ".", 8) = 1 425 write(3, ":1011500005868E858F84758600E0A30586F0A3DB67", 43) = 43 425 read(3, ".", 8) = 1 425 write(3, ":10116000F5758600D0F07454C0E074E3C0E0C0F0C0", 43) = 43 425 read(3, ".", 8) = 1 425 write(3, ":0311700002610712", 17) = 17 425 read(3, ".", 8) = 1 425 write(3, ":00000001FF", 11) = 11 425 read(3, ".", 8) = 1 425 write(3, "@0010000000000000000000003C000000C400984513", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@000E00103520352055FF0000200004001EE3BF", 39) = 39 425 read(3, "@01", 8) = 3 425 write(3, "@0010001E0A00500023FFC4FFC6FFC8FFCDFFD0FF6C", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@0010002EDCFFEAFFC4FFEFFFF0FFF1FFF4FFF6FF86", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@0010003EFE0007FFEF000B000C000D000F0010007C", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@0010004E16001D86A6C6E600000000000000000097", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@0010005E0000000000000000000000000000000092", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@0010006E09052B548B007A00007A051F9046D8E0C4", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@0010007E30E01A7F0190F1F91202807F085008904B", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@0010008EF3BE120280800690F37712028090006D0C", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@0010009EE07014D24D7B017A00796DE47F407E06CC", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@001000AEFDFC124C2E8006FF126B8B50247F10E449", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@001000BEFEEF75F090901AFE1222A1E0B4040280B9", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@001000CE08B407028003B40B010EDFE590456DEE18", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@001000DEF0900055E06030E57A14702B7F04120624", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@001000EE29EF7023900056E07014D24D7B017A00F8", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@001000FE7956E4FFFE7D03FC124C2E028112FF1294", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@0010010E6B8B500312812A907C187401F0D0F0741E", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@0010011E8EC0E07454C0E0C0F0026107907C187489", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@0010012E01F07FC1128530900063EFF07FC312851E", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@0010013E30900064EFF07FC8128530900065EFF0CC", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@0010014E7FD0128530900066EFF07FD2128530900E", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@0010015E0067EFF07FD8128530900068EFF07FE6F1", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@0010016E128530900069EFF07FE712853090006ABB", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@0010017EEFF07FE912853090006BEFF07FEC128587", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@0010018E3090006CEFF0907DD97401F0A37409F0FB", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@0010019E7D867F4812854E7D887F5812854E7D085C", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@001001AE7F5212854E7DFF7F7912854E7D027F43F1", 43) = 43 425 read(3, <unfinished ...> 425 <... read resumed> "@01", 8) = 3 425 write(3, "@001001BE12854E7D8C7F5712854E7DD47F761285AB", 43) = 43 425 read(3, <unfinished ...> 425 <... read resumed> "@01", 8) = 3 425 write(3, "@001001CE4E7D200F12854E7D107F5012854E7F7C06", 43) = 43 425 read(3, <unfinished ...> 425 <... read resumed> "@01", 8) = 3 425 write(3, "@001001DE12854EE4900060F0A3F0900061E0645050", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@001001EE6026900060E0FFC3944F501C907C187402", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@001001FE01F0EF4480FD7F4112856A900061EFF0BF", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@0010020E900060E004F080D27DFE7F7612854E7DF8", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@0010021E600F12854E90005F741DF0FD7F7C12857D", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@0010022E4E90005F7401F0E4900061F090005FE08A", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@0010023EC3940F5032900061E0FF64386029EF6480", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@0010024E3C602490005FE004F0907C187401F09004", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@0010025E005FE0FD7F4312854E12856D900061EFC9", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@0010026EF0E0242AF080C57F8C12858390005AEF2F", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@0010027EF07F0C12858390005BEFF090005AE0FE49", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@0010028ED39F500302831390005D740CF090005CBA", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@0010029EEEF090005BE0FCA3E0D39C4024A3E0943E", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@001002AE16501EE004F0E0FF6407600DEF640F606F", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@001002BE0812857F90005CEFF0907C187401F0803E", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@001002CED190005E740CF090005CECF090005AE05F", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@001002DEFF90005CE0C39F400302844890005EE004", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@001002EE94005003028448E014F0E0FF6407600DB0", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@001002FEEF640F600812858390005CEFF0907C181D", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@0010030E7401F080C790005BE0FFEEC39F400302D4", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@0010031E839E90005E740CF090005CEFF090005A9B", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@0010032EE0FE90005CE0D39E402690005EE09416C6", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@0010033E501EE004F0E0FF6407600DEF640F6008EC", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@0010034E12858390005CEFF0907C187401F080CDE4", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@0010035E90005D740CF090005CEEF090005BE0FF9E", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@0010036EA3E0C39F4003028448A3E094005003021D", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@0010037E8448E014F0E0FF6407600DEF640F60083E", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@0010038E12857F90005CEFF0907C187401F080CBAA", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@0010039E90005D7416F07F9612858390005CEFF0EE", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@001003AE7F1612858390005BEFF0A3E0FE6F601A5C", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@001003BE90005BE0FFEED39F4007EE2404FEFF802B", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@001003CE04EF2404FF90005AEFF090005AE0FF90E3", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@001003DE005CE0C39F5024A3E09400401EE014F0A4", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@001003EEE0FF6407600DEF640F600812857F9000D8", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@001003FE5CEFF0907C187401F080CF90005BE0A36E", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@0010040EF090005E7416F090005AE0FF90005CE0F1", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@0010041EC39F502690005EE09400401EE014F0E072", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@0010042EFF6407600DEF640F600812858390005C17", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@0010043EEFF0907C187401F080CD90005EE025E026", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@0010044E2423F582E43400F583E0FEA3E0FF900060", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@0010045E5DE025E02423F582E43400F583E0FCA37F", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@0010046EE0C39FFFEC9EFE900057F0A3EFF0C39405", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@0010047EF6EE6480947F5005754A028019D3900081", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@0010048E58E0940A900057E0648094804005E4F5AB", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@0010049E4A8003754A017451254AF582E43400F509", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@001004AE83E0F54B900062E004F0904950F0A3E534", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@001004BE4BF0FD7F5712854EE4907DD9F0A3F0905E", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@001004CE0065E0FD7F4812854E900067E0FD7F528B", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@001004DE12854E90006BE0FD7F7912854E90006480", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@001004EEE0FD7F4312854E900066E0FD7F50128541", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@001004FE4E90006CE0FD7F7C12854E900068E0FD12", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@0010050E7F5812854E900063E0FD7F4112854E901C", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@0010051E0069E0FD7F7612854E90006AE0FD0F02C5", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@0010052E854E907DD2EFF0E4A3F0907DD8F004F0EC", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@0010053E907DD8E020E0F9128592907DD7E0FF22E1", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@0010054E907DD2EFF0E4A3F0A3EDF0E4907DD8F02F", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@0010055E04F0907DD8E020E0F902859212854E904D", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@0010056E7DD97448F07440F07448F07F8212853063", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@0010057E22EF4480FFAD077F5712856A8F4AE54A06", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@0010058E242AFF22754AC8D54AFD22090026F3A067", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@0010059E05A50005A5001AE490006DF0E490005644", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@001005AEF0D0F074A1C0E074F3C0E0C0F0E40261DA", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@001005BE0709002F826805CB0005CB0023120B51D3", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@001005CE53FFFD9043E6E0907C16F03029FD120BB0", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@001005DE5DD0F07473C0E07482C0E0C0F0026107B9", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@001005EE09001E979D05FA0005FA0012EF700CD057", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@001005FEF074A2C0E07497C0E0C0F0026107090079", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@0010060E31BFD386180006180025205311907E2581", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@0010061EE0540F904F90F078A4E6904F91F0780F41", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@0010062ED0F074D5C0E074BFC0E0C0F0026107091D", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@0010063E0064D3CF86490006490058904F90E0647D", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@0010064E01704130663E758600904F91E0F5F0C323", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@0010065E94085030E5F02323904C3BC33582F5824D", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@0010066E858284858385058405840586C3E004F030", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@0010067E7004A3E004F020670B0586E004F070041C", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@0010068EA3E004F0D08274D2C0E074D3C0E0C08284", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@0010069E026107090033DC6346AD0006AD0027900A", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@001006AE4764E0FFC394014006EFD394054008125F", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@001006BE04FD904764EFF0D0F07468C0E074DCC0C5", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@001006CEE0C0F002610709002A6DA806E00006E00E", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@001006DE001E6004D3026107E55EB40104C302612B", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@001006EE07D0F074ACC0E0746DC0E0C0F0026107DA", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@001006FE09001DC641870A00070A00117B04D0F0CD", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@0010070E7443C0E074C6C0E0C0F00261070900493E", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@0010071EC8A58727000727003DE5666405600975B3", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@0010072E3801907F56E08939758601AC84AD8574A9", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@0010073E0CC32584F584E43585F585E0C333F0A339", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@0010074EE033F08C848D85D0F074B2C0E074C8C0F4", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@0010075EE0C0F002610709001B43AC077000077090", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@0010076E000FD0F074B9C0E07443C0E0C0F0026175", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@0010077E0709002D426A078B00078B002190468FD8", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@0010078EE0700B907C24E054FE4440F08002C2AD39", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@0010079ED0E0904352C082C083C0E00261070900DE", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@001007AE62834907B80007B800569041B91222ADCE", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@001007BE900008121D1470359041B91222AD9000B0", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@001007CE73121D14907D22F0A3E054FBF0C000754F", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@001007DE000600D500FCD000907D23E04404F0D04C", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@001007EEE090838CC082C083C0E0026107907D22BE", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@001007FEE4F0D0E090834EC082C083C0E002610777", 43) = 43 425 read(3, <unfinished ...> 425 <... read resumed> "@01", 8) = 3 425 write(3, "@0010080E0900234ADF081A00081A0017903EDFE09D", 43) = 43 425 read(3, <unfinished ...> 425 <... read resumed> "@01", 8) = 3 425 write(3, "@0010081EF54B754A01D0F0904AE2C082C083C0F019", 43) = 43 425 read(3, <unfinished ...> 425 <... read resumed> "@01", 8) = 3 425 write(3, "@0010082E02610720000D00000000000000009098FB", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@0010083E0A00AD10987F047E11903D01E0B4FC6E6D", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@0010084E903D00E0B40A67903D03E07025A3E0FA06", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@0010085EA3E0FBC0867586008A838B827586019025", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@0010086E3CC6758600E0758601F0D0867F057E0059", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@0010087E803CB40110A3E0FFA3E0FD120D25EF9024", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@0010088E3CC6F080E7B40213A3E0FFA3E0FDE4FB57", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@0010089E120725EF903CC6EDF080D1A3E0FAA3E05D", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@001008AEFBA3E08A838B82F0903CC6F080BE903C26", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@001008BEC0740EF0A3EFF0A37401F0A30586903D73", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@001008CE00E0A30586F0A30586E00586F0A3EEF012", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@001008DEEF2402FF304F03026C92026B1E2A0004BB", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@001008EE012600210606000002020404060608087E", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@001008FE0A0A0000000000000202040406060808AE", 43) = 43 425 read(3, "@01", 8) = 3 425 write(3, "@0005090E0A0A7F00034E", 21) = 21 425 read(3, "@01", 8) = 3 425 write(3, "Z", 1) = 1 425 write(3, "\x01\x18\xfc\x02\x22\xfd", 6) = 6 425 read(3, "\x04\x0e\x04\x01\x18\xfc\x00", 8) = 7 425 write(3, "\x01\x01\xfc\x06\x3e\x3d\x2d\x8a\x12\x00", 10) = 10 425 read(3, "\x04\x0e\x04\x01\x01\xfc\x00", 8) = 7 425 write(3, "\x01\x20\xfc\x03\x00\x00\x00", 7) = 7 425 read(3, "\x04\x0e\x04\x01\x20\xfc\x00", 8) = 7 425 write(3, "\x01\x1c\xfc\x05\x00\x02\x00\x00\x00", 9) = 9 425 read(3, "\x04\x0e\x04\x01\x1c\xfc\x00", 8) = 7 425 write(3, "\x01\x1e\xfc\x05\x00\x00\x01\x03\x00", 9) = 9 425 read(3, "\x04\x0e\x04\x01\x1e\xfc\x00", 8) = 7 425 write(3, "\x01\x22\xfc\x01\x00", 5) = 5 425 read(3, "\x04\x0e\x04\x01\x22\xfc\x00", 8) = 7 425 write(3, "\x01\x27\xfc\x0a\x01\x03\x03\x00\x00\x00\x00\x00\x00\x00", 14) = 14 425 read(3, "\x04\x0e\x04\x01\x27\xfc\x00", 8) = 7 425 write(3, "\x01\x1a\x0c\x01\x03", 5) = 5 425 read(3, "\x04\x0e\x04\x01\x1a\x0c\x00", 8) = 7 [-- Attachment #3: ezx_bt.txt --] [-- Type: text/plain, Size: 2837 bytes --] 444 write(14, "\x01\x05\x10\x00", 4) = 4 443 read(14, "\x04", 1) = 1 443 read(14, "\x0e\x0b", 2) = 2 443 read(14, "\x01\x05\x10\x00\x79\x01\x40\x0a\x00\x00\x00", 11) = 11 444 write(14, "\x01\x33\x0c\x07\x1c\x03\x00\x01\x00\x00\x00", 11) = 11 443 read(14, "\x04", 1) = 1 443 read(14, "\x0e\x04", 2) = 2 443 read(14, "\x01\x33\x0c\x00", 4) = 4 444 write(14, "\x01\x09\x0c\x00", 4) = 4 443 read(14, "\x04", 1) = 1 443 read(14, "\x0e\x05", 2) = 2 443 read(14, "\x01\x09\x0c\x00\x00", 5) = 5 444 write(14, "\x01\x20\x0c\x01\x00", 5) = 5 443 read(14, "\x04", 1) = 1 443 read(14, "\x0e\x04", 2) = 2 443 read(14, "\x01\x20\x0c\x00", 4) = 4 444 write(14, "\x01\x22\x0c\x01\x00", 5) = 5 443 read(14, "\x04", 1) = 1 443 read(14, "\x0e\x04", 2) = 2 443 read(14, "\x01\x22\x0c\x00", 4) = 4 444 write(14, "\x01\x26\x0c\x02\x60\x00", 6) = 6 443 read(14, "\x04", 1) = 1 443 read(14, "\x0e\x04", 2) = 2 443 read(14, "\x01\x26\x0c\x00", 4) = 4 443 read(14, <unfinished ...> 444 write(14, "\x01\x13\x0c\xf8\x43\x79\x70\x68\x27\x73\x20\x45\x36\x38\x30\x49\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", 252) = 252 443 <... read resumed> "\x04", 1) = 1 443 read(14, "\x0e\x04", 2) = 2 443 read(14, "\x01\x13\x0c\x00", 4) = 4 443 read(14, <unfinished ...> 444 write(14, "\x01\x1a\x0c\x01\x02", 5) = 5 443 <... read resumed> "\x04", 1) = 1 443 read(14, "\x0e\x04", 2) = 2 443 read(14, "\x01\x1a\x0c\x00", 4) = 4 443 read(14, <unfinished ...> 444 write(14, "\x01\x24\x0c\x03\x04\x22\x58", 7) = 7 443 <... read resumed> "\x04", 1) = 1 443 read(14, "\x0e\x04", 2) = 2 443 read(14, "\x01\x24\x0c\x00", 4) = 4 443 read(14, <unfinished ...> [-- Attachment #4: dload.dump --] [-- Type: application/octet-stream, Size: 401 bytes --] [-- Attachment #5: ezx_bt.dump --] [-- Type: application/octet-stream, Size: 567 bytes --] ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [Bluez-devel] BCM2035 over UART on the E680I 2005-09-23 14:28 ` Marcel Holtmann 2005-09-24 0:22 ` Ho Ming Shun @ 2005-09-24 7:28 ` Ho Ming Shun 1 sibling, 0 replies; 15+ messages in thread From: Ho Ming Shun @ 2005-09-24 7:28 UTC (permalink / raw) To: bluez-devel Hi, I just did an interesting experiment: After the phone's native stack was initialized, I killed off all processes. Then I did a hciattach to ttyS1, followed by "hciconfig hci0 up". The BD_ADDR still shows 00:00:00:00:00:00. It seems that the chip can still operate with READ_BD_ADDR returning 00:00:00:00:00:00. The phone's stack though already knows the BD_ADDR through some other means (which I have not discovered). ------------------------------------------------------- SF.Net email is sponsored by: Tame your development challenges with Apache's Geronimo App Server. Download it for free - -and be entered to win a 42" plasma tv or your very own Sony(tm)PSP. Click here to play: http://sourceforge.net/geronimo.php _______________________________________________ Bluez-devel mailing list Bluez-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/bluez-devel ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [Bluez-devel] [SOLVED] BCM2035 over UART on the E680I 2005-09-18 13:44 [Bluez-devel] BCM2035 over UART on the E680I Ho Ming Shun 2005-09-19 9:25 ` Oliver @ 2005-10-03 8:47 ` Ho Ming Shun 2005-10-03 11:36 ` Marcel Holtmann 1 sibling, 1 reply; 15+ messages in thread From: Ho Ming Shun @ 2005-10-03 8:47 UTC (permalink / raw) To: bluez-devel Hi, Thanks to all those who attempted to help me. Looking through all the code I've hacked together late last night, I spotted a stupid mistake. Long story short, I realised that I was basing my custom hciattach on the wrong set of ioctls. It called a custom ioctle Motorola added to the serial driver that caused the bluetooth chip to reset, therefore falling back to its "default" address. Nevertheless, I hope this exercise can let some of you know about the vendor-specific HCI commands that can be used to program the BCM2035, especially programming in a custom BD_ADDR. Thanks again! ------------------------------------------------------- This SF.Net email is sponsored by: Power Architecture Resource Center: Free content, downloads, discussions, and more. http://solutions.newsforge.com/ibmarch.tmpl _______________________________________________ Bluez-devel mailing list Bluez-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/bluez-devel ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [Bluez-devel] [SOLVED] BCM2035 over UART on the E680I 2005-10-03 8:47 ` [Bluez-devel] [SOLVED] " Ho Ming Shun @ 2005-10-03 11:36 ` Marcel Holtmann 2005-10-03 11:15 ` Ho Ming Shun 0 siblings, 1 reply; 15+ messages in thread From: Marcel Holtmann @ 2005-10-03 11:36 UTC (permalink / raw) To: bluez-devel Hi, > Thanks to all those who attempted to help me. Looking through all the > code I've hacked together late last night, I spotted a stupid mistake. > > Long story short, I realised that I was basing my custom hciattach on > the wrong set of ioctls. It called a custom ioctle Motorola added to the > serial driver that caused the bluetooth chip to reset, therefore falling > back to its "default" address. > > Nevertheless, I hope this exercise can let some of you know about the > vendor-specific HCI commands that can be used to program the BCM2035, > especially programming in a custom BD_ADDR. what do think about writing all this stuff up and posting a patch for the hciattach program? I also read that Harald Welte is hacking on the A780 GSM interface. So maybe at some point it is possible to fully replace their binary only stuff. Regards Marcel ------------------------------------------------------- This SF.Net email is sponsored by: Power Architecture Resource Center: Free content, downloads, discussions, and more. http://solutions.newsforge.com/ibmarch.tmpl _______________________________________________ Bluez-devel mailing list Bluez-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/bluez-devel ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [Bluez-devel] [SOLVED] BCM2035 over UART on the E680I 2005-10-03 11:36 ` Marcel Holtmann @ 2005-10-03 11:15 ` Ho Ming Shun 2005-10-03 12:42 ` Marcel Holtmann 0 siblings, 1 reply; 15+ messages in thread From: Ho Ming Shun @ 2005-10-03 11:15 UTC (permalink / raw) To: bluez-devel Marcel Holtmann wrote: >Hi, > > > >>Thanks to all those who attempted to help me. Looking through all the >>code I've hacked together late last night, I spotted a stupid mistake. >> >>Long story short, I realised that I was basing my custom hciattach on >>the wrong set of ioctls. It called a custom ioctle Motorola added to the >>serial driver that caused the bluetooth chip to reset, therefore falling >>back to its "default" address. >> >>Nevertheless, I hope this exercise can let some of you know about the >>vendor-specific HCI commands that can be used to program the BCM2035, >>especially programming in a custom BD_ADDR. >> >> > >what do think about writing all this stuff up and posting a patch for >the hciattach program? > > That will be good, but will take some time. Right now I'm using a program totally seperate from hciattach. The only common code is the setting of line discipline and HCI protocol. The whole thing is also tied together with a shell script that calls a binary program on the phone firmware (to load the BCM2035 firmware, set BD_ADDR, and some other stuff which have not been figured out.) Meanwhile if anyone is interested, the binary is at: http://cyph.ath.cx:8080/downloads/ezx-bluez-0.2.tar.bz2 Sources are at: http://cyph.ath.cx:8080/downloads/ezx-bluez-init-0.2.tar.bz2 >I also read that Harald Welte is hacking on the A780 GSM interface. So >maybe at some point it is possible to fully replace their binary only >stuff. > > That will be good. For some reason, Motorola's linux phone's have not attracted as much hacker talent as other devices (e.g. OpenWRT, Ipaq, Zaurus). Hopefully it will change. Meanwhile the most active english forum seems to be at www.motorolafans.com. >Regards > >Marcel > > > > >------------------------------------------------------- >This SF.Net email is sponsored by: >Power Architecture Resource Center: Free content, downloads, discussions, >and more. http://solutions.newsforge.com/ibmarch.tmpl >_______________________________________________ >Bluez-devel mailing list >Bluez-devel@lists.sourceforge.net >https://lists.sourceforge.net/lists/listinfo/bluez-devel > > > ------------------------------------------------------- This SF.Net email is sponsored by: Power Architecture Resource Center: Free content, downloads, discussions, and more. http://solutions.newsforge.com/ibmarch.tmpl _______________________________________________ Bluez-devel mailing list Bluez-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/bluez-devel ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [Bluez-devel] [SOLVED] BCM2035 over UART on the E680I 2005-10-03 11:15 ` Ho Ming Shun @ 2005-10-03 12:42 ` Marcel Holtmann 0 siblings, 0 replies; 15+ messages in thread From: Marcel Holtmann @ 2005-10-03 12:42 UTC (permalink / raw) To: bluez-devel Hi, > >what do think about writing all this stuff up and posting a patch for > >the hciattach program? > > > > > That will be good, but will take some time. Right now I'm using a > program totally seperate from hciattach. The only common code is the > setting of line discipline and HCI protocol. The whole thing is also > tied together with a shell script that calls a binary program on the > phone firmware (to load the BCM2035 firmware, set BD_ADDR, and some > other stuff which have not been figured out.) Meanwhile if anyone is > interested, the binary is at: > > http://cyph.ath.cx:8080/downloads/ezx-bluez-0.2.tar.bz2 > > Sources are at: > > http://cyph.ath.cx:8080/downloads/ezx-bluez-init-0.2.tar.bz2 > > >I also read that Harald Welte is hacking on the A780 GSM interface. So > >maybe at some point it is possible to fully replace their binary only > >stuff. > > > > > That will be good. For some reason, Motorola's linux phone's have not > attracted as much hacker talent as other devices (e.g. OpenWRT, Ipaq, > Zaurus). Hopefully it will change. Meanwhile the most active english > forum seems to be at www.motorolafans.com. try to write some notes about all the specific commands and ioctl stuff you found. The ultimate goal for most people is to use the 2.6 kernel series. For Bluetooth this is also important, because we don't support the 2.4 kernels anymore. Regards Marcel ------------------------------------------------------- This SF.Net email is sponsored by: Power Architecture Resource Center: Free content, downloads, discussions, and more. http://solutions.newsforge.com/ibmarch.tmpl _______________________________________________ Bluez-devel mailing list Bluez-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/bluez-devel ^ permalink raw reply [flat|nested] 15+ messages in thread
end of thread, other threads:[~2005-10-03 12:42 UTC | newest] Thread overview: 15+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2005-09-18 13:44 [Bluez-devel] BCM2035 over UART on the E680I Ho Ming Shun 2005-09-19 9:25 ` Oliver 2005-09-19 10:22 ` Ho Ming Shun 2005-09-19 14:50 ` Oliver 2005-09-20 11:53 ` Marcel Holtmann 2005-09-23 11:41 ` Ho Ming Shun 2005-09-23 13:53 ` Marcel Holtmann 2005-09-23 13:07 ` Ho Ming Shun 2005-09-23 14:28 ` Marcel Holtmann 2005-09-24 0:22 ` Ho Ming Shun 2005-09-24 7:28 ` Ho Ming Shun 2005-10-03 8:47 ` [Bluez-devel] [SOLVED] " Ho Ming Shun 2005-10-03 11:36 ` Marcel Holtmann 2005-10-03 11:15 ` Ho Ming Shun 2005-10-03 12:42 ` Marcel Holtmann
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).