RPi-3 brcmfmac errors on boot

Michael Zoran mzoran at crowfest.net
Tue Nov 29 16:38:16 PST 2016


On Tue, 2016-11-29 at 16:32 -0800, Michael Zoran wrote:
> On Tue, 2016-11-29 at 15:04 -0500, Don Zickus wrote:
> > On Mon, Nov 28, 2016 at 01:42:42PM -0800, Michael Zoran wrote:
> > > On Mon, 2016-11-28 at 11:18 -0500, Don Zickus wrote:
> > > > 
> > > > But bluetooth..
> > > > 
> > > > I have a custom built hciattach binary to use to download the
> > > > special
> > > > bluetooth firmware /lib/firmware/BCM43430A1.hcd
> > > > 
> > > > hciattach /dev/ttyAMA0 bcm43xx-3wire 921600 noflow -
> > > > 
> > > > However that still times out trying to start the initial
> > > > download
> > > > (based on
> > > > hciattach debug printfs I have).
> > > > 
> > > > I am guessing my bluetooth pins are not setup correctly?  Where
> > > > can I
> > > > find
> > > > the correct pull ups I need?
> > > > 
> > > 
> > > You can find the pullups in the downstream device tree source
> > > file.  Or
> > >  at least I think that's what's setting up the pullups. Although
> > > if
> > > you
> > > are detecting it, it might be correct.
> > 
> > Hi Michael,
> > 
> > I am not sure it is being detected.  I believe I have to download
> > the
> > binary
> > blob with hciattach to activate the device, which is what I am
> > failing with.
> > 
> > > 
> > > I know they made a patch for bluez that might be part of it.  I
> > > also
> > > know the Bluetooth module used in the RPI 3 isn't that
> > > great.  It's
> > > a
> > > serial attached module for all that's worth.
> > 
> > Yeah, I have those 5 bluez patches in my hciattach binary but it
> > still isn't
> > working.  I was hoping to figure out how to determine if the device
> > is
> > configured correctly.
> > 
> > I tried to mimic some of the device tree stuff from raspbian with a
> > patch
> > like below:
> > 
> > diff --git a/arch/arm/boot/dts/bcm283x.dtsi
> > b/arch/arm/boot/dts/bcm283x.dtsi
> > index 02fde31..975184e 100644
> > --- a/arch/arm/boot/dts/bcm283x.dtsi
> > +++ b/arch/arm/boot/dts/bcm283x.dtsi
> > @@ -189,6 +189,7 @@
> >                         gpclk2_gpio43: gpclk2_gpio43 {
> >                                 brcm,pins = <43>;
> >                                 brcm,function =
> > <BCM2835_FSEL_ALT0>;
> > +                               brcm,pull = <0>;
> >                         };
> > 
> >                         i2c0_gpio0: i2c0_gpio0 {
> > @@ -305,6 +306,7 @@
> >                         uart0_ctsrts_gpio32: uart0_ctsrts_gpio32 {
> >                                 brcm,pins = <32 33>;
> >                                 brcm,function =
> > <BCM2835_FSEL_ALT3>;
> > +                               brcm,pull = <0 2>;
> >                         };
> > 
> >                         uart1_gpio14: uart1_gpio14 {
> > @@ -341,10 +343,10 @@
> >                         compatible = "brcm,bcm2835-pl011",
> > "arm,pl011",
> > "arm,primecell";
> >                         reg = <0x7e201000 0x1000>;
> >                         interrupts = <2 25>;
> > -                       clocks = <&clocks BCM2835_CLOCK_UART>,
> > -                                <&clocks BCM2835_CLOCK_VPU>;
> > +                       clocks = <&clk_uart0 &clk_apb_p>;
> >                         clock-names = "uartclk", "apb_pclk";
> >                         arm,primecell-periphid = <0x00241011>;
> > +                       status = "disabled";
> >                 };
> > 
> >                 i2s: i2s at 7e203000 {
> > @@ -537,5 +542,22 @@
> >                         clock-output-names = "otg";
> >                         clock-frequency = <480000000>;
> >                 };
> > +
> > +               clk_uart0: clock at 5 {
> > +                       compatible = "fixed-clock";
> > +                       reg = <5>;
> > +                       #clock-cells = <0>;
> > +                       clock-output-names = "uart0_pclk";
> > +                       clock-frequency = <48000000>;
> > +               };
> > +
> > +               clk_apb_p: clock at 6 {
> > +                       compatible = "fixed-clock";
> > +                       reg = <6>;
> > +                       #clock-cells = <0>;
> > +                       clock-output-names = "apb_pclk";
> > +                       clock-frequency = <126000000>;
> > +               };
> > +
> >         };
> > 
> > But no luck. :-(
> > 
> > Thoughts?
> > 
> > Cheers,
> > Don
> > 
> 
> This is a long shot, but I noticed that the downstream kernel has
> this
> line:
> 
> &uart0 {
>         pinctrl-names = "default";
>         pinctrl-0 = <&uart0_pins &bt_pins>;
>         status = "okay";
> };
> 
> I think with your names, it would look like:
> 
> &uart0 {
>         pinctrl-names = "default";
>         pinctrl-0 = <&gpclk2_gpio43 &uart0_ctsrts_gpio32>;
>         status = "okay";
> };
> 
> Just for debugging, you can try pointing your config.txt at the
> Raspbian dtb these days.  It built "on top" of the upstream dtb.
> 
> The downstream dtb is bcm2710-rpi-3-b.dtb.
> 
> 

Hi, I also noticed this:

hciattach /dev/ttyAMA0 bcm43xx-3wire 921600 noflow -

Is /dev/ttyAMA0 pointing at the GPIO serial port(mini uart) or the main
uart?  On the RPI3, the Bluetooth is connected to the main uart which
is normally ttyS0 with the downstream kernel.








More information about the linux-rpi-kernel mailing list