[yocto] meta-raspberrypi systemd rpi0-w bluetooth startup

r10kindsofpeople r10kindsofpeople at gmail.com
Sun Mar 18 11:10:49 PDT 2018


Update:  I suspect this is not the proper way to do this, but in case it
provides useful information toward a better solution...
1) systemctl disable brcm43438.service
2) modified 99-com.rules to include TAG+="systemd" and
ENV{SYSTEMD_WANTS}="device-brcm43438.service"
3) cp /lib/systemd/system/brcm43438.service
/etc/systemd/system/device-brcm43438.service
4) modified device-brcm43438.service to be as follows:
[Unit]
Description=Broadcom BCM43438 bluetooth HCI

[Service]
Type=simple
ExecStart=/usr/bin/hciattach -n /dev/serial1 bcm43xx 921600 noflow -
Restart=on-failure

note removal of Before, After, ConditionPath, Install sections and addition
of Restart=on-failure.  This last was to cope with an intermittent timeout
in hciattach.  Suppose I should have tried increasing the timeout first.

This seems to have gotten me to the point of it starting up at least 10
times successfully.  Bottom line, in my opinion, is that brcm43438.service
is somehow running  before the udev script can create the symbolic link for
/dev/serial1 -> /dev/ttyAMA0 despite the  "After=dev-serial1.device"
clause.

John


On Sat, Mar 17, 2018 at 12:32 PM r10kindsofpeople <
r10kindsofpeople at gmail.com> wrote:

> Background:  I'm trying to bring up the pi zero w's bluetooth using
> systemd.  Started with rocko and then moved to 'master' of meta-raspberry
> pi, sync'd about a week ago after noticing that there were some recent
> updates in this area.
>
> There was an initial problem with /dev/serial1 not showing up...I found
> udev-rules-rpi.bb, added it to my layer, and when it still didn't show up
> in my rootfs, I punted and installed it in /etc/udev/rules.d by hand and
> now /dev/serial1 shows up.  Given time, I can probably fix the recipe on my
> own, so moving on.
>
> But brcm43438.service still fails on boot.  Despite having
> "After=dev-serial1.device" in the service Unit section, it fails with:
>
> Mar 17 16:21:13 raspberrypi0-wifi systemd[1]: Started Broadcom BCM43438
> bluetooth HCI.
> Mar 17 16:21:14 raspberrypi0-wifi hciattach[105]: Can't open serial port:
> No such file or directory
> Mar 17 16:21:14 raspberrypi0-wifi hciattach[105]: Can't initialize device:
> No such file or directory
> Mar 17 16:21:14 raspberrypi0-wifi systemd[1]: [[0;1;39mbrcm43438.service:
> Main process exited, code=exited, status=1/FAILURE[[0m
> Mar 17 16:21:14 raspberrypi0-wifi systemd[1]: [[0;1;39mbrcm43438.service:
> Unit entered failed state.[[0m
> Mar 17 16:21:14 raspberrypi0-wifi systemd[1]: [[0;1;39mbrcm43438.service:
> Failed with result 'exit-code'.[[0m
>
> If, after booting and ssh'ing into pi, I restart the service, it starts
> successfully.
>
> Any hints about what I might change to get the brcm43438.service to start
> correctly the first time (every time)?
>
> John
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.yoctoproject.org/pipermail/yocto/attachments/20180318/146d3e2a/attachment.html>


More information about the yocto mailing list