Date: Sat, 21 Mar 2015 12:00:50 -0700 From: Waitman Gobble <gobble.wa@gmail.com> To: Maksim Yevmenkin <maksim.yevmenkin@gmail.com> Cc: "freebsd-bluetooth@freebsd.org" <freebsd-bluetooth@freebsd.org>, Iain Hibbert <plunky@ogmig.net> Subject: Re: register HID with SDP error Message-ID: <CAFuo_fzYPTKHCmk9c1KbSvGUJ=dbX3Dd7jEZgenEOkEhv%2BXNEg@mail.gmail.com> In-Reply-To: <CAFuo_fxME%2B9-bA6KWG4pjokAZhfEeMGptMw-H3z=eb%2B9KHGhug@mail.gmail.com> References: <CAFuo_fy9xRU2T3GUPY8116yZCUd8sL9pBQ9ixXnMwO56niJFog@mail.gmail.com> <CAFuo_fzdmB79qdoH8P5EcO_ZZoa=_id6h=eqFBXvP_a%2B3WMkLw@mail.gmail.com> <CAFuo_fzB3A5L3vivH7Z80OEoBtVEHftEYE4LUkhnrkguzL5GDA@mail.gmail.com> <CAFuo_fzrk%2BWLXivZrnTsGQD%2BS7mq%2BUSXB7Mn6%2BJT=y64JakGSw@mail.gmail.com> <CAFPOs6q3iVcNthF=S--UgTm=5wA0HM6coqB7AcmCKb=55OWdTQ@mail.gmail.com> <CAFuo_fxgBVKxmzbJs%2B-XDz%2Bu4tb2_i3eYXSa-oiOoU%2BQD6ApwQ@mail.gmail.com> <CAFPOs6r_D7bcGCMP_bP%2BQtZgKt7Oj5jRJ2v872RODekn%2B6xv1Q@mail.gmail.com> <CAFuo_fwPuaD4bYwfZou0RBswZsTmdtVZA1B2GqUdo3ZJJiWRQg@mail.gmail.com> <0AD7A2F7-37BE-4F6A-9FD6-F6C81B2CAF36@gmail.com> <CAFuo_fye5RWNtjsutHa%2BbXL0AYHYRpJxW-b=48o0iMwX227wdA@mail.gmail.com> <alpine.NEB.2.11.1503170658130.4414@galant.ogmig.net> <CAFuo_fx47uRC-eKD_KtsSsrMCQZauyHyCOgRxGbtp_WEZ49o_Q@mail.gmail.com> <CAFPOs6rYXOFPk5_nqXivToUvGRjXDMS=XL60RyKbMQm7nP8wFg@mail.gmail.com> <CAFuo_fw5-YtH_sj3Ft52hpfXEP8QCkweptJzT0eUSos9DoBZ%2BA@mail.gmail.com> <CAFuo_fzSMNvwewpkKxcLr9aHyTcwaVgcreLtexSo=FNzNhC6og@mail.gmail.com> <CAFPOs6rJ_SaKjmXrbr%2Bpa9BoVL2HtjkzoyBo015BFK1QB9ZVsQ@mail.gmail.com> <CAFuo_fxGgWYp5x=xWbFogj8F8ZMULFQw_HOWZiJ42=vDO7tXnQ@mail.gmail.com> <CAFPOs6o7jrULqF%2BVSbZ0ckFx3MqAbO-eHyL5FfToTL4xMxSBLQ@mail.gmail.com> <CAFuo_fxocC6KhHqXf2HWpMLFNMFo2tdmv4RMv1MYYBXkC=3FJg@mail.gmail.com> <CAFuo_fwp_Nb2kOk=7qKO6VV5%2Bu_MG5GwaKYkwKFDjUuVo%2BG-aw@mail.gmail.com> <CAFPOs6rNSqS=ZyZKZDWy2T437bkoXpfKEFn_Znpo7X6UgXMNVw@mail.gmail.com> <CAFuo_fzMaRu-VgP48GqETT6AfYT20eR6Ry13J=CiC=mibSvCig@mail.gmail.com> <CAFPOs6oBd4OagKixg6NH-uWzWCc4g%2B7U-uO1VdQY-UzzcZQBPA@mail.gmail.com> <CAFuo_fz-hZ9WXX1Uvc-vEwTMrPeyakGsStTkS6RGEzwMTh%2BsUw@mail.gmail.com> <77352B43-637C-4E0D-B4CC-B42D977551F6@gmail.com> <CAFuo_fyHmY%2BO6uN4DkBoHr99=X3PN2gzL0gZ6EyrZfkRL8MWBw@mail.gmail.com> <CAFPOs6o7fSh=-Jossgo_nLLz5iPpZA%2BGX%2BvxH7bezdQSk1_j-w@mail.gmail.com> <CAFuo_fxME%2B9-bA6KWG4pjokAZhfEeMGptMw-H3z=eb%2B9KHGhug@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On Sat, Mar 21, 2015 at 11:16 AM, Waitman Gobble <gobble.wa@gmail.com> wrote: > On Sat, Mar 21, 2015 at 11:02 AM, Maksim Yevmenkin > <maksim.yevmenkin@gmail.com> wrote: >> [...] >> >>> Hey, that works! Thank you. >>> >>> hccontrol Write_Class_Of_Device 02:50:40 >> >> great! as i said, you can also automate it. please read >> bluetooth.device.conf(5). in your case you will need to create >> /etc/bluetooth/ubt0.conf and add >> >> class="02:50:40" >> >> this way class will be applied every time you start ubt0 device. >> >>> so now I have to figure out how to send the PIN that the connecting >>> device demands to receive. I suppose it's sending 0000. But it appears >>> there has to be a human action in this case. >> >> you have a couple of options here: >> >> (1) use hcsecd(8). since you want to pair with any host (because your >> code implements device) you can use default entry. please read >> hcsecd.conf(5) for more details. >> >> device { >> bdaddr 00:00:00:00:00:00; >> name "Default entry"; >> key nokey; >> pin "0000"; >> } >> >> something like this might work; >> >> (2) write your own code. basically, you want to open raw HCI socket >> and listen for PIN code and link key requests and events. hcsecd(8) >> source code can be used as reference; >> >> thanks, >> max > > Max, > > I modified hcsecd a little. if you set the pin to "PROMPT" in hcsecd > it blocks on reading a FIFO at /tmp/pinprompt > > https://github.com/waitman/hcsecd > > > echo "835753" > /tmp/pinprompt > > it adds "enter key" 0x0D at the end so that device will continue. > Otherwise it sits there until the end of time, I think? I obviously > didn't wait until the end of time, but my android phone went way past > the timeout without the 'enter key' appended to the pin string. > > if you want PIN reply on some devices and PROMPT on others, that can > be an issue. > > looks like it works,but only tested like 10 times. > > > #define FIFO_NAME "/tmp/pinprompt" > ... > char newpin[16]; > ... > > strncpy(newpin,pin,strlen(pin)); > if (strcmp("PROMPT",pin)==0) > { > char sfifo[300]; > int numfifo, fdfifo; > mknod(FIFO_NAME, S_IFIFO | 0666, 0); > fdfifo = open(FIFO_NAME, O_RDONLY); > do { > if ((numfifo = read(fdfifo, sfifo, 300)) == -1) > { > /* oh no */ > } else { > //syslog(LOG_DEBUG,"%s pincode entered",sfifo); > } > } while (numfifo>0); > > sfifo[strlen(sfifo)-1] = 0x0D; /* enter key */ > sfifo[strlen(sfifo)-1] = '\0'; > strncpy(newpin,sfifo,strlen(sfifo)); > } > ng_hci_pin_code_rep_cp *cp = NULL; > > cmd->opcode = htole16(NG_HCI_OPCODE(NG_HCI_OGF_LINK_CONTROL, > NG_HCI_OCF_PIN_CODE_REP)); > cmd->length = sizeof(*cp); > > cp = (ng_hci_pin_code_rep_cp *)(cmd + 1); > memcpy(&cp->bdaddr, bdaddr, sizeof(cp->bdaddr)); > strncpy(cp->pin, newpin, strlen(newpin)); > cp->pin_size = strlen((char const *) cp->pin); > syslog(LOG_DEBUG, "Sending PIN_Code_Reply to '%s' " \ > "for remote bdaddr %s", > addr->hci_node, bt_ntoa(bdaddr, NULL)); > > > > -- > Waitman Gobble > Los Altos California USA > 510-830-7975 correction, should be newpin[32], or maybe more.. MS windows asks for a longer pincode. -- Waitman Gobble Los Altos California USA 510-830-7975
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAFuo_fzYPTKHCmk9c1KbSvGUJ=dbX3Dd7jEZgenEOkEhv%2BXNEg>