有时候(大约 25% 的时间)当我启动我的 Raspberry Pi 时,USB 设备将无法工作。查看下面的 dmesg 输出。我的设备似乎已连接,然后一两秒后断开连接,然后一旦进入系统,TTYUSB0、TTYUSB1 和 TTYUSB2 文件也全部丢失。在随后的启动中,设备绑定正常并且一切工作 100%,因此此问题具有间歇性。
在进行系统更新和升级以及运行以下命令后,开始出现此间歇性问题。有什么想法可能导致这种情况吗?
sudo -Es
systemctl daemon-reload
systemctl disable --now ifupdown dhcpcd dhcpcd5 isc-dhcp-client isc-dhcp-common rsyslog
apt --autoremove purge ifupdown dhcpcd dhcpcd5 isc-dhcp-client isc-dhcp-common rsyslog
rm -r /etc/network /etc/dhcp
systemctl disable --now avahi-daemon libnss-mdns
apt --autoremove purge avahi-daemon
echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf
apt install libnss-resolve
ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
apt-mark hold avahi-daemon dhcpcd dhcpcd5 ifupdown isc-dhcp-client isc-dhcp-common libnss-mdns openresolv raspberrypi-net-mods rsyslog
systemctl enable systemd-networkd.service systemd-resolved.service
exit
[ 4.004167] cfg80211: Loading compiled-in X.509 certificates for regulatory database
[ 4.099090] cfg80211: Loaded X.509 cert 'sforshee: 00b28ddf47aef9cea7'
[ 4.108376] platform regulatory.0: Direct firmware load for regulatory.db failed with erro
[ 4.108398] cfg80211: failed to load regulatory.db
[ 4.158111] brcmfmac: F1 signature read @0x18000000=0x15264345
[ 4.167330] brcmfmac: brcmf_fw_alloc_request: using brcm/brcmfmac43455-sdio for chip BCM43
[ 4.167769] usbcore: registered new interface driver brcmfmac
[ 4.195837] brcmfmac mmc1:0001:1: Direct firmware load for brcm/brcmfmac43455-sdio.raspber
[ 4.376882] brcmfmac: brcmf_fw_alloc_request: using brcm/brcmfmac43455-sdio for chip BCM43
[ 4.396739] rtc-ds1307: probe of 1-006f failed with error -121
[ 4.398437] brcmfmac: brcmf_c_preinit_dcmds: Firmware: BCM4345/6 wl0: Mar 1 2015 07:29:38
[ 4.554898] brcmfmac: brcmf_cfg80211_set_power_mgmt: power save enabled
[ 4.662995] usbcore: registered new interface driver usbserial_generic
[ 4.663037] usbserial: USB Serial support registered for generic
[ 4.672106] usbcore: registered new interface driver ftdi_sio
[ 4.672120] usbcore: registered new interface driver cp210x
[ 4.672160] usbserial: USB Serial support registered for FTDI USB Serial Device
[ 4.672206] usbserial: USB Serial support registered for cp210x
[ 4.672316] ftdi_sio 1-1.2:1.0: FTDI USB Serial Device converter detected
[ 4.672318] cp210x 1-1.3:1.0: cp210x converter detected
[ 4.672428] usb 1-1.2: Detected FT232RL
[ 4.679334] usb 1-1.2: FTDI USB Serial Device converter now attached to ttyUSB0
[ 4.679537] ftdi_sio 1-1.4:1.0: FTDI USB Serial Device converter detected
[ 4.679646] usb 1-1.4: Detected FT232RL
[ 4.682651] usb 1-1.3: cp210x converter now attached to ttyUSB1
[ 4.683305] usb 1-1.4: FTDI USB Serial Device converter now attached to ttyUSB2
[ 4.697841] rpivid-mem feb00000.hevc-decoder: rpivid-hevcmem initialised: Registers at 0xf
[ 4.698166] rpivid-mem feb10000.rpivid-local-intc: rpivid-intcmem initialised: Registers a
[ 4.698387] rpivid-mem feb20000.h264-decoder: rpivid-h264mem initialised: Registers at 0xf
[ 4.699574] rpivid-mem feb30000.vp9-decoder: rpivid-vp9mem initialised: Registers at 0xfeb
[ 4.705043] bcmgenet: Skipping UMAC reset
[ 4.706545] bcmgenet fd580000.ethernet: configuring instance for external RGMII
[ 4.706747] bcmgenet fd580000.ethernet eth0: Link is Down
[ 4.960922] random: crng init done
[ 4.960936] random: 7 urandom warning(s) missed due to ratelimiting
[ 6.113256] usb 1-1.1: USB disconnect, device number 3
[ 6.113557] rp-usbdisp 1-1.1:1.0: waiting for all tickets to be finished...
[ 6.113785] rp-usbdisp 1-1.1:1.0: RP USB Display (#1) now disconnected
[ 6.115705] usb 1-1.2: USB disconnect, device number 4
[ 6.116286] ftdi_sio ttyUSB0: FTDI USB Serial Device converter now disconnected from ttyUS
[ 6.116345] ftdi_sio 1-1.2:1.0: device disconnected
[ 6.117190] usb 1-1.3: USB disconnect, device number 5
[ 6.117575] cp210x ttyUSB1: cp210x converter now disconnected from ttyUSB1
[ 6.117633] cp210x 1-1.3:1.0: device disconnected
[ 6.118441] usb 1-1.4: USB disconnect, device number 6
[ 6.118994] ftdi_sio ttyUSB2: FTDI USB Serial Device converter now disconnected from ttyUS
[ 6.119050] ftdi_sio 1-1.4:1.0: device disconnected
[ 7.463926] squashfs: version 4.0 (2009/01/31) Phillip Lougher
[ 9.930297] bcmgenet fd580000.ethernet eth0: Link is Up - 1Gbps/Full - flow control rx/tx
[ 9.930327] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
[ 10.867743] bridge: filtering via arp/ip/ip6tables is no longer available by default. Upda
[ 10.871278] Bridge firewalling registered
[ 11.261788] ------------[ cut here ]------------
[ 11.261933] WARNING: CPU: 1 PID: 65 at net/wireless/sme.c:756 __cfg80211_connect_result+0x
[ 11.261938] Modules linked in: nf_conntrack_netlink nfnetlink xt_addrtype iptable_filter iashfs overlay binfmt_misc rpivid_mem cp210x ftdi_sio usbserial rtc_ds1307 regmap_i2c brcmfmac_midi snd_seq_midi_event bcm2835_codec(C) v4l2_mem2mem videobuf2_dma_contig snd_rawmidi raspbuio evdev joydev bcm2835_v4l2(C) bcm2835_mmal_vchiq(C) vc_sm_cma(C) videobuf2_vmalloc videobuysimgblt fb_sys_fops ipv6 nf_defrag_ipv6
[ 11.262054] CPU: 1 PID: 65 Comm: kworker/u8:1 Tainted: G C O 5.4.51-v7l+ #133
[ 11.262057] Hardware name: BCM2711
[ 11.262129] Workqueue: cfg80211 cfg80211_event_work [cfg80211]
[ 11.262133] Backtrace:
[ 11.262146] [<c020d46c>] (dump_backtrace) from [<c020d768>] (show_stack+0x20/0x24)
[ 11.262151] r6:ef294000 r5:00000000 r4:c129c8f8 r3:ad07bc4f
[ 11.262160] [<c020d748>] (show_stack) from [<c0a39a44>] (dump_stack+0xe0/0x124)
[ 11.262169] [<c0a39964>] (dump_stack) from [<c0221c70>] (__warn+0xec/0x104)
[ 11.262174] r8:000002f4 r7:00000009 r6:bf28c168 r5:00000000 r4:00000000 r3:ad07bc4f
[ 11.262180] [<c0221b84>] (__warn) from [<c0221d40>] (warn_slowpath_fmt+0xb8/0xc0)
[ 11.262185] r9:bf28c168 r8:000002f4 r7:bf260d00 r6:00000009 r5:00000000 r4:c1204f88
[ 11.262254] [<c0221c8c>] (warn_slowpath_fmt) from [<bf260d00>] (__cfg80211_connect_result+
[ 11.262259] r9:00000122 r8:ef295e54 r7:c1204f88 r6:00000000 r5:dffa840c r4:dffc5004
[ 11.262389] [<bf2608c4>] (__cfg80211_connect_result [cfg80211]) from [<bf22cb0c>] (cfg8021
[ 11.262394] r8:dffc5090 r7:dffc5028 r6:dffc5098 r5:dffc5004 r4:dffa8400
[ 11.262523] [<bf22ca08>] (cfg80211_process_wdev_events [cfg80211]) from [<bf22cba8>] (cfg8
[ 11.262529] r10:00000000 r9:00000100 r8:00000000 r7:dfe17600 r6:ef846400 r5:df60c470
[ 11.262532] r4:dffc5004
[ 11.262659] [<bf22cb68>] (cfg80211_process_rdev_events [cfg80211]) from [<bf2261b8>] (cfg8
[ 11.262663] r5:ef977100 r4:df60c0e4
[ 11.262732] [<bf226194>] (cfg80211_event_work [cfg80211]) from [<c023e244>] (process_one_w
[ 11.262736] r4:df60c0e4 r3:bf226194
[ 11.262742] [<c023e0c8>] (process_one_work) from [<c023eaac>] (worker_thread+0x54/0x5b4)
[ 11.262747] r10:ef977100 r9:ef294038 r8:c1203d00 r7:ef846418 r6:00000088 r5:ef977114
[ 11.262751] r4:ef846400
[ 11.262757] [<c023ea58>] (worker_thread) from [<c0244e90>] (kthread+0x13c/0x168)
[ 11.262762] r10:efa174dc r9:ef901e74 r8:c023ea58 r7:ef977100 r6:00000000 r5:ef974200
[ 11.262765] r4:efa174c0
[ 11.262771] [<c0244d54>] (kthread) from [<c02010ac>] (ret_from_fork+0x14/0x28)
[ 11.262775] Exception stack(0xef295fb0 to 0xef295ff8)
[ 11.262779] 5fa0: 00000000 00000000 00000000 00000000
[ 11.262784] 5fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
[ 11.262789] 5fe0: 00000000 00000000 00000000 00000000 00000013 00000000
[ 11.262793] r10:00000000 r9:00000000 r8:00000000 r7:00000000 r6:00000000 r5:c0244d54
[ 11.262797] r4:ef974200 r3:c0204648
[ 11.262814] ---[ end trace 18f9f282ca963cc4 ]---
[ 11.483205] netlink: 'wpa_supplicant': attribute type 213 has an invalid length.
[ 11.608570] IPv6: ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready
[ 30.602006] Bluetooth: Core ver 2.22
[ 30.602064] NET: Registered protocol family 31
[ 30.602072] Bluetooth: HCI device and connection manager initialized
[ 30.602091] Bluetooth: HCI socket layer initialized
[ 30.602103] Bluetooth: L2CAP socket layer initialized
[ 30.602122] Bluetooth: SCO socket layer initialized
[ 30.609018] Bluetooth: HCI UART driver ver 2.3
[ 30.609029] Bluetooth: HCI UART protocol H4 registered
[ 30.609088] Bluetooth: HCI UART protocol Three-wire (H5) registered
[ 30.609284] Bluetooth: HCI UART protocol Broadcom registered
[ 30.694773] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[ 30.694783] Bluetooth: BNEP filters: protocol multicast
[ 30.694800] Bluetooth: BNEP socket layer initialized
[ 128.811552] TCP: request_sock_TCP: Possible SYN flooding on port 38663. Sending cookies.
[ 268.653076] TCP: request_sock_TCP: Possible SYN flooding on port 39569. Sending cookies.
[ 314.270766] ieee80211 phy0: brcmf_vif_set_mgmt_ie: vndr ie set error : -52
[ 314.271326] ieee80211 phy0: brcmf_vif_set_mgmt_ie: vndr ie set error : -52
[ 314.271935] ieee80211 phy0: brcmf_vif_set_mgmt_ie: vndr ie set error : -52
[ 315.693723] TCP: request_sock_TCP: Possible SYN flooding on port 34855. Sending cookies.
[ 501.855600] TCP: request_sock_TCP: Possible SYN flooding on port 45579. Sending cookies.
ubuntu@subaero-CYEG-002:~$ ^C
ubuntu@subaero-CYEG-002:~$ dmesg | grep wpa
[ 11.262180] [<c0221b84>] (__warn) from [<c0221d40>] (warn_slowpath_fmt+0xb8/0xc0)
[ 11.262254] [<c0221c8c>] (warn_slowpath_fmt) from [<bf260d00>] (__cfg80211_connect_result+0x43c/0x4e8 [cfg80211])
[ 11.483205] netlink: 'wpa_supplicant': attribute type 213 has an invalid length.
答案1
如果updown,更具体地说,禁用networking.service会导致usb设备在启动后断开连接(不是每次,大约是25-50%的时间),并且udev链接消失。似乎是因为 Networking.service 是唯一在启动时运行 udevadm set 的启用服务,因此删除它可能会导致 udev 实例在启动时被其他进程压缩。
当您想要禁用networking.service并删除/清除ifupdown包时,创建一个在启动期间启用并在正确时间运行的“执行一次”服务可以解决此问题。
在 /lib/systemd/system 中创建一个名为 udevadm-settle-dummy.service 的服务
上面文件中的服务应如下所示:
[Unit]
Description=run udevadm settle
DefaultDependencies=no
Wants=network.target
After=local-fs.target network-pre.target apparmor.service systemd-sysctl.servic$
Before=network.target shutdown.target network-online.target
Conflicts=shutdown.target
[Install]
WantedBy=multi-user.target
WantedBy=network-online.target
[Service]
Type=oneshot
ExecStartPre=/sbin/udevadm settle
ExecStart=/sbin/udevadm settle
RemainAfterExit=true
TimeoutStartSec=5min
在 /lib/systemd/system 中运行以下命令:
sudo chmod 777 udevadm-settle-dummy.service
sudo systemctl daemon-reload
sudo systemctl enable udevadm-settle-dummy.service