diff --git a/src/hci.c b/src/hci.c index b5938fcc8..7af0ae3da 100644 --- a/src/hci.c +++ b/src/hci.c @@ -854,10 +854,16 @@ static void hci_initialization_timeout_handler(timer_source_t * ds){ hci_stack->num_cmd_packets = 1; hci_run(); break; - case HCI_INIT_W4_SEND_BAUD_CHANGE: - log_info("Local baud rate change to %"PRIu32, ((hci_uart_config_t *)hci_stack->config)->baudrate_main); - hci_stack->hci_transport->set_baudrate(((hci_uart_config_t *)hci_stack->config)->baudrate_main); - break; + case HCI_INIT_W4_SEND_BAUD_CHANGE: { + uint32_t baud_rate = ((hci_uart_config_t *)hci_stack->config)->baudrate_main; + // Limit baud rate for Broadcom chipsets to 3 mbps + if (hci_stack->manufacturer == 0x000f && baud_rate > 3000000){ + baud_rate = 3000000; + } + log_info("Local baud rate change to %"PRIu32, baud_rate); + hci_stack->hci_transport->set_baudrate(baud_rate); + break; + } default: break; }