Studio Bluetooth Forum Discussions
Hi,
Our customer plan to list on BT SIG with CYW43438 as a component subsystem.
After confirming with Japanese certification lab, referring to the following URL, the CYW43438 is registration as TCRL 2016-2.
However, the lab says it currently needs to be TCRL 2019-2. So protocol part of the difference from the current TCRL 2019-2 must be secured.
https://launchstudio.bluetooth.com/ListingDetails/2306
Q1. Is it possible to secure the difference from 2019-2?
If Yes, please let us know how it can be secured. Could you provide information that can be notified to the certification lab?
Regards,
Nagao.
Show LessHi
The following question is from customers.
By attached image, Class2 GFSK Tx Power in "General"
the TYP value is 2dBm, could you tell us the min and max values?
note:
In the "Power Control Step", there is a description of Typ: 4dB,
I think that 6dBm Tx_power can be output even in Class2.
Is it correct?
Thanks
Yang
Show LessHii,
I am struck with sending the HCI commands to the CYW920719 board . CYW920719 is attached to linux machine it is coming like ttyWICED_HCI_UART10 . Using hci attach i am attaching the device to bluez stack . I am able to get CYW920719 in hci0. Manually i can able to sen the hci commands using hcitool.
I want send the commands using python script. I am using libusb to send the commands. Unable to send the hci commands geting USB pipe error.
Here is my python script:
import usb.core
import usb.util
import subprocess
import logging
class Result(object):
"""Command execution result.
Contains information of executed command by subprocess.
Attributes:
command: command as a string.
exit_status: Integer exit code of the process.
stdout: The output from standard out.
stderr: The output from standard error.
"""
def __init__(self, command, stdout, stderr, exit_status):
self.command = command
self.stdout = stdout
self.stderr = stderr
self.exit_status = exit_status
def __repr__(self😞
return ('Result(command=%r, stdout=%r, stderr=%r, exit_status=%r)'
) % (self.command, self.stdout, self.stderr, self.exit_status)
def run(command, subprocess_input=""😞
""" Executes the commands on shell.
Args:
command: Command to be executed.
subprocess_input: Input to be given for the subprocess
Returns:
True: command line output on success or False otherwise
"""
proc = subprocess.Popen(
command,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
shell=True)
(out, err) = proc.communicate(subprocess_input.encode())
result = Result(
command=command,
stdout=out.decode("utf-8").strip(),
stderr=err.decode("utf-8").strip(),
exit_status=proc.returncode
)
if proc.returncode != 0:
logging.error("ERROR: Command Failed - %s" % result)
return False
return out
def create_hci_command_packet(ogf, ocf, data=()):
""" Prepare the formatted hci command packet
Args:
ogf (int): Opcode Group Field
ocf (int): Opcode Command Field
data (list): Command Parameters
Return:
hci_command_packet (Byte array): on success
False (bool): otherwise
"""
opcode = (((ogf << 10) & 0xffff) | ocf)
byte_str = bytes.fromhex('0' + str(hex(opcode)).strip("0x"))
opcode = bytes([c for t in zip(byte_str[1::2],
byte_str[::2]) for c in t])
packet = bytearray()
[packet.append(itr) for itr in opcode]
packet.append(len(data))
[packet.append(itr) for itr in data]
if packet:
return packet
return False
print(run("sudo hciattach /dev/ttyWICED_HCI_UART11 -t 10 any 115200 noflow nosleep"))
dev = usb.core.find(idVendor=0x04b4, idProduct=0x009b)
print("dev", dev)
#assert dev.ctrl_transfer(0x40, 0x80, 0, 0, msg) == len(msg)
packet = create_hci_command_packet(0x03, 0x0019)
print("packet", packet)
print(dev.ctrl_transfer(0x20, 0, 0, 0, bytes(packet), 1000))
#print(dev.ctrl_transfer(0x20, 0, 0, 0, bytes(packet), 1000))
print(read_endpoint.read(size_or_buffer=10,
timeout=10000))
Result:
b'Device setup complete\n'
dev DEVICE ID 04b4:009b on Bus 002 Address 021 =================
bLength : 0x12 (18 bytes)
bDescriptorType : 0x1 Device
bcdUSB : 0x200 USB 2.0
bDeviceClass : 0x0 Specified at interface
bDeviceSubClass : 0x0
bDeviceProtocol : 0x0
bMaxPacketSize0 : 0x40 (64 bytes)
idVendor : 0x04b4
idProduct : 0x009b
bcdDevice : 0x700 Device 7.0
iManufacturer : 0x1 Cypress
iProduct : 0x2 WICED USB <-> Serial Converter
iSerialNumber : 0x0
bNumConfigurations : 0x1
CONFIGURATION 1: 100 mA ==================================
bLength : 0x9 (9 bytes)
bDescriptorType : 0x2 Configuration
wTotalLength : 0x37 (55 bytes)
bNumInterfaces : 0x2
bConfigurationValue : 0x1
iConfiguration : 0x0
bmAttributes : 0x80 Bus Powered
bMaxPower : 0x32 (100 mA)
INTERFACE 0: Vendor Specific ===========================
bLength : 0x9 (9 bytes)
bDescriptorType : 0x4 Interface
bInterfaceNumber : 0x0
bAlternateSetting : 0x0
bNumEndpoints : 0x2
bInterfaceClass : 0xff Vendor Specific
bInterfaceSubClass : 0xff
bInterfaceProtocol : 0xff
iInterface : 0x2 WICED USB <-> Serial Converter
ENDPOINT 0x81: Bulk IN ===============================
bLength : 0x7 (7 bytes)
bDescriptorType : 0x5 Endpoint
bEndpointAddress : 0x81 IN
bmAttributes : 0x2 Bulk
wMaxPacketSize : 0x200 (512 bytes)
bInterval : 0x0
ENDPOINT 0x2: Bulk OUT ===============================
bLength : 0x7 (7 bytes)
bDescriptorType : 0x5 Endpoint
bEndpointAddress : 0x2 OUT
bmAttributes : 0x2 Bulk
wMaxPacketSize : 0x200 (512 bytes)
bInterval : 0x0
INTERFACE 1: Vendor Specific ===========================
bLength : 0x9 (9 bytes)
bDescriptorType : 0x4 Interface
bInterfaceNumber : 0x1
bAlternateSetting : 0x0
bNumEndpoints : 0x2
bInterfaceClass : 0xff Vendor Specific
bInterfaceSubClass : 0xff
bInterfaceProtocol : 0xff
iInterface : 0x2 WICED USB <-> Serial Converter
ENDPOINT 0x83: Bulk IN ===============================
bLength : 0x7 (7 bytes)
bDescriptorType : 0x5 Endpoint
bEndpointAddress : 0x83 IN
bmAttributes : 0x2 Bulk
wMaxPacketSize : 0x200 (512 bytes)
bInterval : 0x0
ENDPOINT 0x4: Bulk OUT ===============================
bLength : 0x7 (7 bytes)
bDescriptorType : 0x5 Endpoint
bEndpointAddress : 0x4 OUT
bmAttributes : 0x2 Bulk
wMaxPacketSize : 0x200 (512 bytes)
bInterval : 0x0
packet bytearray(b'\x19\x0c\x00')
Traceback (most recent call last):
File "Hci_commands.py", line 94, in <module>
print(dev.ctrl_transfer(0x20, 0, 0, 0, bytes(packet), 1000))
File "/home/vijay/.local/lib/python3.5/site-packages/usb/core.py", line 1043, in ctrl_transfer
self.__get_timeout(timeout))
File "/home/vijay/.local/lib/python3.5/site-packages/usb/backend/libusb1.py", line 883, in ctrl_transfer
timeout))
File "/home/vijay/.local/lib/python3.5/site-packages/usb/backend/libusb1.py", line 595, in _check
raise USBError(_strerror(ret), ret, _libusb_errno[ret])
usb.core.USBError: [Errno 32] Pipe error
How to solve the Pipe error.
Dear Sir or Madam,
is there a way to program the CYBT-343026-01 to work as an A2DP sink device (audio output via I2S) and mute the Bluetooth source at a certain SPI command and output a sound (e.g. from a wave file) itself via I2S?
So, can you generate tones with the CYBT-343026-01 and output them via I2S?
Best regards,
Simon
Show LessI am getting started with CYW20719 and the "stb" set-top-box demo appears perfect for my application.
The demo readme file says to see demo\stb\hci_control.c for the reference application, but I can't find it anywhere (along with some other demos mentioned)
I am working on OS X but have installed all available versions on both Mac and Windows and the stb directory does not exist in any of them.
Where can I access these missing reference demos? I have spent hours searching with no luck.
Thanks In Advance
Show LessI am trying to design the power supply for the CYBT-4130xx-02 module. What is the worse case peak current if the radio is on and processor at full throttle?
Show LessWe have used CYW20704 BT module in our product and are using the wake on Bluetooth functionality of CYW20704. The waking up of the host (our product) works fine with Ubuntu (using 16.04), Windows 10 and Android 6.0.1 but has an issue with iOS. The issue reproduce-able with iphone 6S (running iOS 12.4.4) and with iPAD (running iOS 13.2). Haven't test this is on other Operating systems other than listed here.
The problem is that with iOS products, when we initiate bluetooth communication with our product in its standby state, the connect request wakes up the product but if the product goes in suspended state within 25 seconds, it wakes up spuriously for a Bluetooth Event which was not initiated by the iOS device. On our product we are using Linux 4.9 with Bluez 4.91 (it is bit old, but due to security certifications for our product, we haven't upgraded bluez version)
Below is the extract from hcidump logs on our product -
HCI sniffer - Bluetooth packet analyzer ver 1.29
device: hci0 snap_len: 1028 filter: 0xffffffff
> ACL data: handle 11 flags 0x02 dlen 12
L2CAP(s): Connect req: psm 1 scid 0x0b08
< ACL data: handle 11 flags 0x00 dlen 16
< ACL data: handle 11 flags 0x00 dlen 23
< HCI Command: Exit Sniff Mode (0x02|0x0004) plen 2
> HCI Event: Command Status (0x0f) plen 4
> ACL data: handle 11 flags 0x02 dlen 16
L2CAP(s): Config req: dcid 0x0041 flags 0x00 clen 4
MTU 256
< ACL data: handle 11 flags 0x00 dlen 18
> HCI Event: Mode Change (0x14) plen 6
> HCI Event: Number of Completed Packets (0x13) plen 5
> ACL data: handle 11 flags 0x02 dlen 29
L2CAP(s): Config rsp: scid 0x0041 flags 0x00 result 0 clen 15
Success
MTU 672 Mode 0x00 (Basic)
> ACL data: handle 11 flags 0x02 dlen 23
L2CAP(d): cid 0x0041 len 19 [psm 0]
< ACL data: handle 11 flags 0x00 dlen 46
> HCI Event: Number of Completed Packets (0x13) plen 5
> ACL data: handle 11 flags 0x02 dlen 39
L2CAP(d): cid 0x0041 len 35 [psm 0]
< ACL data: handle 11 flags 0x00 dlen 33
> ACL data: handle 11 flags 0x02 dlen 25
L2CAP(d): cid 0x0041 len 21 [psm 0]
< ACL data: handle 11 flags 0x00 dlen 33
> HCI Event: Number of Completed Packets (0x13) plen 5
> ACL data: handle 11 flags 0x02 dlen 12
L2CAP(s): Disconn req: dcid 0x0041 scid 0x0b08
< ACL data: handle 11 flags 0x00 dlen 12
> HCI Event: Number of Completed Packets (0x13) plen 5
< HCI Command: Write Scan Enable (0x03|0x001a) plen 1
> HCI Event: Command Complete (0x0e) plen 4
< HCI Command: Read Scan Enable (0x03|0x0019) plen 0
> HCI Event: Command Complete (0x0e) plen 5
< HCI Command: Write Class of Device (0x03|0x0024) plen 3
> HCI Event: Command Complete (0x0e) plen 4
> HCI Event: Mode Change (0x14) plen 6
< HCI Command: Write Scan Enable (0x03|0x001a) plen 1
> HCI Event: Command Complete (0x0e) plen 4
< HCI Command: Read Scan Enable (0x03|0x0019) plen 0
> HCI Event: Command Complete (0x0e) plen 5
< HCI Command: Write Class of Device (0x03|0x0024) plen 3
> HCI Event: Command Complete (0x0e) plen 4
The Log statement in bold, italic, underlined is the events which is causing the spurious wake up. This event happens around 25 seconds after the previous wake up. If the product goes to standby within 25 seconds, it will be woken up due to this event. Any information on what would be causing this event will be helpful.
Show LessDear All,,,
I am going to develop our application with Cypress's Dual Mode BT Chipset CYW20706.
Our application runs as a peripheral (Server / Slave),
and after connection we need to update the connection parameters.
I looked for a related example after wiced studio installation, but couldn't find it.
Please let me know if there are any code examples I can refer to.
Thanks,
Show LessHi Team,
I'm trying to develop a application which should display the name of the caller when there is a incoming call from the connected mobile device.
In my source code file I have included #include "wiced_bt_hfp_hf.h" to initiate and connect the HFP profile from CYW201819 board.
When I call the below API, I am getting linking error, as shown below:
wiced_result_t hfpResult = wiced_bt_hfp_hf_init(&app_hfp_config,app_bt_hfp_hf_event_cb_t); | ||
WICED_BT_TRACE("\nwiced_bt_hfp_hf_init hfpResult: %d\n", hfpResult); |
wiced_result_t hfpConnectResult = wiced_bt_hfp_hf_connect( p_encryption_status->bd_addr ); | ||
WICED_BT_TRACE("\nwiced_bt_hfp_hf_init hfpConnectResult: %d\n", hfpConnectResult); |
Error is as below when I try to build the app:
/home/arch272129/mtw/Trial_EB_TVS_Proj/template/empty_wiced_bt//empty_wiced_bt.c:360: undefined reference to `wiced_bt_hfp_hf_init'
../../../wiced_btsdk/dev-kit/baselib/20819A1/make/core/build.mk:611: recipe for target '/home/arch272129/mtw/Trial_EB_TVS_Proj/template/empty_wiced_bt/build/CYW920819EVB-02/Debug/EmptyWicedBluetooth.elf' failed
/home/arch272129/mtw/Trial_EB_TVS_Proj/template/empty_wiced_bt//empty_wiced_bt.c:360: undefined reference to `wiced_bt_hfp_hf_connect'
collect2: error: ld returned 1 exit status
make: *** [/home/arch272129/mtw/Trial_EB_TVS_Proj/template/empty_wiced_bt/build/CYW920819EVB-02/Debug/EmptyWicedBluetooth.elf] Error 1
I even tried adding COMPONENTS in the application make file, but not helpful, not sure whether I am adding a proper component or not, could you please suggest me what is going wrong even when the header is included, why the library of HFP is not being included.
Thank You,
Arathi, C
Show LessHello Cypress,
I am designing a device for my client who wants the device name of each device to be 'unique enough' so that if there are a few of the same device within pairing range, they will appear unique relative to the others. I would like to have each device randomly generate and append two hex values (1 byte) to the end of their advertised device name, like so:
Product_name_XX
Ideally I would like to generate a random device address using the Make Target command "BT_DEVICE_ADDRESS=random", and then use the last byte of that generated address and append it to the device name that gets advertised, but I can not figure out how to do it. The most similar question I found to mine is here, but I could not understand what is going on here either: CYBT-423028-02 (CYW20719) device name and address . Could someone please walk me through achieving this device name formatting?
Thanks!
Show Less