# Highlights of BK8000L from datasheet ## arduino library: Library for this module ## specs: 1) Bluetooth v2.1 + EDR ; 2) A2DP v1.2 ; 3) AVRCP v1.0 ; 4) HFP v1.5 ; 5) GAVDP1.2 ; 6) HSP1.2 ; 7) IOP ## Parameters: ||| |-------------------------|----------------| | Bluetooth Specification | Bluetooth V2.1 | | Supply voltage | DC3.3-4.2V , ≤ 2.9V Automatic shutdown, ≤ 3.1V Call the police | | Bluetooth protocol support | HFPV1.5 , A2DPV1.2 , AVRCPV1.4 , HSP1.2 , GAVDP1.2 , IOP | | Working current | ≤ 60mA | | Standby Current | <500uA | | temperature range | - 40oC ~ + 85oC | | Wireless transmission range | ≤ 10 Meters | | transmit power |Class2 4dbm | | Sensitivity | - 80dBm <0.1% BER | | Frequency Range | 2.4GHz ~ 2.480GHz | | External Interface | Serial ( TTL Level, 3.3V ) | | Audio Performance | SBC decoding | | Module size | 25x13.5x1.8mm | | Size adapter plate | 21x29mm | ## PINOUT | PIN | NAME | decription | NOTES | |-----|------|------------|-----------------| | 1 | GND | ground for antena || | 2 | ANT | antena, default off, internal is used || | 3 | GND | ground for antena || | 4 | VOL + (TMS) | volume up, JTAG || | 5 | VOL - (TCK) | volume down, JTAG || | 6 | NEXT (TDO) | next track, JTAG || | 7 | PREV (TDI) | previous track, JTAG || | 8 | #RST | reset, active LOW || | 9 | MBISTEN | unused || | 10 | TX(GPIO0) | 3.3V UART TX || | 11 | RX(GPIO1) | 3.3V UART RX || | 12 | PP/CALL (GPIO2) | Play / Pause / phone / releases / re-pair || | 13 | LED0 (GPIO3) | Status Indicator || | 14 | LED1 (GPIO4) | Status Indicator || | 15 | MUTE (GPIO5) | Mute Control (mute output low), the control terminal of the power amplifier || | 16 | GND | power ground || | 17 | AGND | AUX ground || | 18 | #AUX_DET (GPIO11) | AUX Insertion detection (active low) || | 19 | AUX_R | AUX Right channel input || | 20 | AUX_L | AUX Left channel input || | 21 | MIC_N | Microphone negative terminal || | 22 | MIC_P | Microphone positive terminal || | 23 | VMIC | Microphone bias voltage || | 24 | LN | Audio left differential output negative end || | 25 | LP | Audio left positive differential output terminal || | 26 | RP | Audio right differential output positive terminal || | 27 | RN | Audio right differential output negative end || | 28 | VBUS | Unused || | 29 | VBAT | power input( 3.3 ~ 4.2V ) || | 30 | 3V0 | Unused || | 31 | ADC | Unused || | 32 | GND | power ground || ## AT instruction ### Serial Configuration 1. Baud Rate 9600 ; 2. 8 Data bits; 3. No parity bit; 4. One stop bit; 5. 9600 , N , 8 , 1 . ### Format Control Instruction format: AT + \ \[\\]\r\n Feedback data format: \ \[\\]\r\n ### Control instructions -------------------------------------------------------------------------------- | Serial command | parameter | description | example | return | note | |----------------|-----------|-------------|------------|------------|----------| | CA | | pairing | AT+CA\r\n ||| | CB | | Exit pairing | AT+CB\r\n ||| | CC | | The last paired device connected | AT+CC\r\n ||what this should do? connect to last connected device?| | CD | | disconnect | AT+CD\r\n ||| | CE | | Answer the call | AT+CD\r\n ||| | CF | | reject a call | AT+CF\r\n ||| | CG | | Hang up | AT+CG\r\n | || | CH | | redial | AT+CH\r\n || last called number? | | CK | | volume up | AT+CK\r\n ||| | CL | | volume down | AT+CL\r\n ||| | CM | | Multi-language switch | AT+CM\r\n ||| | CO | | Channel switching (invalid) | AT+CO\r\n || to be tested | | CP | | Shutdown | AT+CP\r\n ||| | CT | | Enter the test mode | AT+CT\r\n ||| | CW | | Retention | ||test this| | CV | | Open phone VOICE | AT+CV\r\n ||| | CY | | Retention | ||test this| | CZ | | Memory clear | AT+CZ\r\n ||| | CMM | Number:( 0-4 ) | Set the number of multi-lingual | AT+CMM4\r\n ||| | MA | | Music Play / Pause | AT+MA\r\n ||| | MC | | The music stops | AT+MC\r\n ||| | MD | | next track | AT+MD\r\n ||| | ME | | previous track | AT+ME\r\n ||| | MF | | fast forward | AT+MF\r\n || test how does this exacly works? | | MH | | rewind | AT+MH\r\n || test how does this exacly works? | | MN | | Query bluetooth name | AT+MN\r\n | NA:BK8000L\r\n |test this| | MO | | Bluetooth connection status inquiry | AT+MO\rn | connection succeeded:" C1\r\n"no connection:"C0\r\n" || | MP | | PIN Code query | AT+MP\r\n | PN:0000\r\n || | MR | | Query bluetooth address | AT+MR\r\n | AD:111111111111\r\n || | MQ | | Query software version | AT+MQ\r\n |XZX-V1.2\r\n|| | MV | | Bluetooth playback status inquiry | AT+MV\r\n |Play: "MB\r\n", time out:"MA\r\n", disconnect:" M0\r\n" || | MY | | Bluetooth inquiry HFP status | AT+MY\r\n | disconnect:"M0\r\n", connection:"M1\r\n", Caller: "M2\r\n", Outgoing: "M3\r\n", calling:"M4\r\n" || ### from dump of lash: ----------------------------------------------------------- | command | what google tell us about it | module response| |---------|------------------------------|----------------| | AT+CKPD=200|Notifies the AG service when a button on the headset is pressed. [1] | OK | | AT+VGM= | AT+VGM=%gain% Notifies the audio gateway service when the microphone volume on the headset is changed to the specified gain value. [1]|| | AT+VGS= | AT+VGS=%gain% Notifies the audio gateway service when the speaker volume on the headset is changed to the specified gain value. [1]|| | AT+CHUP | Rejects an incoming call. [2]|OK| | AT+CCWA= | Enables call waiting notification in the audio gateway [2]2|OK| | AT+BLDN | Bluetooth last dialled number [2]|| | AT+BRSF= | Retrieves the supported features [2]|| | AT+BTRH= | || | AT+BTRH? | || | AT+BVRA= | Enables or disables voice recognition in the audio gateway. [2] || | AT+CIND=? | Retrieves the indicator mappings for the audio gateway. [2]||| | AT+CIND? | Reads the current status of the audio gateway indicators. [2] || | AT+CMER=3,0,0, | Registers or unregisters status updates. [2] |OK| | AT+CHLD= | |OK| | AT+CHLD=? | |OK| | AT+CLCC | |OK| | AT+CLIP= | Enables the call line identification. |OK| | AT+COPS=3,0 | |OK| | AT+COPS? | |OK| | AT+CNUM | || | AT+VTS= | || | AT+XAPL=0000-0000-0100,7 | | | AT+IPHONEACCEV= | || [1] https://docs.microsoft.com/en-us/previous-versions/windows/embedded/ms881905(v=msdn.10) [2] https://docs.microsoft.com/en-us/previous-versions/windows/embedded/ms881893(v=msdn.10) ### bluetooth status information send without request ----------------------------------------------------------------------------- | static part of data | variable part of sent data| description | real data | |---------------------|---------------------------|-------------|-----------| | II || connection succeeded | II\r\n| | IA || disconnect | IA\r\n| | MA ||| timeout: MA\r\n(isn't this paused music?) | | MB ||| Play: MB\r\n| | IR | number | Caller ID | IR-136XXXXXX | | PR | number | Outdoing number | PR-136XXXXX | | ON || Bluetooth is thurned on | ON\r\n | ### SPP Introduction -------------------------------------------------------------------------------- | SPP Data Format | parameter | description | example | info returnd by module | |-----------------|-----------|-------------|---------|------------------------| | APT+SPP8888 | Four-digit password ( 8888 ) | Through a password to open SPP | APT+SPP8888\r\n | pass OK: OK\r\n, wrong pass: ERR \r\n | | APT+XXXXXXX | data 64byte | transfer data, do not exceed recommended 64byte | APT+XXXXXX\r\n | success: OK\r\n, error: ERR\r\n | | APR+XXXXXXX | data 64byte | receive data, do not exceed recommended 64byte | APR+XXXXXX\r\n | Data sent from phone | ## NOTES: based on datasheet (BK8000L_datasheet.pdf) BK8000L has support for SDcard: | PIN |function| |-----------|------------| | GPIO12 |sd_clk/clk13m| | GPIO13 |sd_cmd/SCL| | GPIO14 |sd_data[0]/SDA| | GPIO15 |sd_data[1]| | GPIO16 |sd_data[2]| | GPIO17 |sd_data[3]| wakeup: The BK8000L can enter into shut down mode when there is no active connection. The shut mode can be waked up by GPIO and USB charge. All GPIO can be source to wake up MCU from shut down state. In shut down state, any level change on the set GPIO will trigger the wake up procedure. ## KICAD supporting files: schematics symbol: PCB module: RE-draw of basic supporting circutes (mic, output etc...) is in breakout board adapter project: here ### strings from flash dump: /AT+ ...skipping AT+CKPD=200 AT+VGM= AT+VGS= sec_ssp_keypress_notify %02x:%02x:%02x:%02x:%02x:%02x %02x sec_ssp_passkey_notify %02x:%02x:%02x:%02x:%02x:%02x %06lu sec_ssp_passkey_req %02x:%02x:%02x:%02x:%02x:%02x remote_name_complete %02x:%02x:%02x:%02x:%02x:%02x %02x %s Command in progress was aborted by the target device sec_ssp_conf_req %02x:%02x:%02x:%02x:%02x:%02x %06lu EVENT_PLAYBACK_STATUS_CHANGED UNKNOWN EVENT EVENT_TRACK_CHANGED EVENT_TRACK_REACHED_END EVENT_TRACK_REACHED_START EVENT_PLAYBACK_POS_CHANGED EVENT_BATT_STATUS_CHANGED EVENT_SYSTEM_STATUS_CHANGED EVENT_PLAYER_APPLICATION_SETTING_CHANGED EVENT_NOW_PLAYING_CONTENT_CHANGED EVENT_AVAILABLE_PLAYERS_CHANGED EVENT_ADDRESSED_PLAYER_CHANGED EVENT_UIDS_CHANGED EVENT_VOLUME_CHANGED avrcp getcaps eventids: count %d id=%d (%s) STOPPED UNKNOWN PLAYING PAUSED FWD_SEEK REV_SEEK id=%d (%s) , playback status=%s , current track index=0x%08lx:%08lx avrcp play status: song length %ld sec song position %ld sec play status %s avrcp %s: %lu Beken FFTTEST AECTEST AECIOCTL acl_req %02x:%02x:%02x:%02x:%02x:%02x %02x%02x%02x hs disconnected %lu INVALID RESULT_T VALUE sco failed to open %s hs connected %lu release failed press failed TITLE ARTIST ALBUM TOTAL_TRACK_NUMBER GENRE PLAYING_TIME [cont'] attr_id %s, char_set_id %d, attr_len 0x%x attr_val%s: %.*s %u %02x:%02x:%02x:%02x:%02x:%02x %u ...skipping AT+CHUP AT+CCWA= AT+BLDN AT+BRSF= AT+BTRH= AT+BTRH? AT+BVRA= AT+CIND=? AT+CIND? AT+CMER=3,0,0, AT+CHLD= AT+CHLD=? AT+CLCC AT+CLIP= AT+COPS=3,0 AT+COPS? AT+CNUM AT+VTS= AT+XAPL=0000-0000-0100,7 AT+IPHONEACCEV= call on hold held call rejected held call accepted AG Response and Hold status - %s AG indicator %s=%d AG current calls %d, %d, %d, %d, %d, %s, %d, %s, %d PR-%s IR-%s AG calling line identification %s, %d, %s, %d, %s, %d AG operator %s AG state {service %d, call %d, callsetup %d, callheld %d, signal %d, roam %d} AG subscriber %s, type %d AG waiting call notification %s, %d, %d, %s, %d, %s, %d, %d disable_complete %lu %02x a2dp connected %lu hf connected %lu stream suspended %lu stream started %lu enable_complete %lu %02x OPERATION NOT STARTED OPERATION IN PROGRESS OPERATION NOT PERMITTED NO SUCH ENTRY INPUT/OUTPUT ERROR DEVICE NOT CONFIGURED FAILED ALLOCATING MEMORY RESOURCE IS BUSY NO SUCH DEVICE INVALID ARGUMENT OPERATION NOT SUPPORTED OPERATION TIMED OUT DEVICE IS SUSPENDED GENERAL-PURPOSE ERROR LOGICAL TEST FAILURE INCORRECT STATE PIPE IS STALLED INVALID PARAMETER OPERATION ABORTED SHORT TRANSFER WOULD BLOCK ALREADY EVALUATION TIME EXPIRED RESOURCE IS FULL DEST ADDR REQUIRED CAN'T ASSIGN REQUESTED ADDRESS MESSAGE TOO LONG NET DOWN NET UNREACHABLE NET RESET CONNECTION ABORTED CONNECTION RESET ALREADY CONNECTED NOT CONNECTED CONNECTION REFUSED HOST DOWN HOST UNREACHABLE NO LINK PROTOCOL NO PROTOCOL OPTION OPERATION INTERRUPTED PROTOCOL TYPE MISMATCH newconn, svc id connecting, svc id %u %02x:%02x:%02x:%02x:%02x:%02x a2dp connecting %lu hs connecting %lu SBC [%02x %02x] bitpool %d/%d 16KHz %s, 32KHz %s, 44KHz %s, 48KHz %s MONO %s, DUAL %s, STEREO %s, JOINT STEREO %s block 4 %s, 8 %s, 12 %s, 16 %s subbands 4 %s, 8 %s SNR %s, Loudness %s MPEG-1,2 AUDIO [%02x %02x %02x %02x] I %s, II %s, III %s, CRC %s 16K %s, 22K %s, 24K %s, 32K %s, 44K %s, 48K %s MPF %s, VBR %s bit rate 0x%x, 0x%x MPEG-2,4 AAC [%02x %02x %02x %02x %02x %02x] MPEG2 LC %s, MPEG4 LC %s, LTP %s, SCALABLE %s 8K %s, 11K %s, 12K %s, 16K %s, 22K %s, 24K %s, 32K %s, 44K %s 48K %s, 64K %s, 88K %s, 96K %s MONO %s, STEREO %s, VBR %s, bit rate %ld ATRAC [%02x %02x %02x %02x %02x %02x %02x] 0123456789ABCDEF 0123456789abcdef Infinity POSIX powf sqrtf ASCII ASCII Public Browse Group Root Bluetooth service discovery 0000 Audio Sink Audio/Video remote Control BK8000L 0000