手机连接USB时如何防止通知和图标弹出?

条件:手机连接USB时无关的通知和弹出窗口。
差分条件:USB电源管理故障,网卡管理失败。
支持:通知,弹出窗口和dmesg警告主要发生在电源状态达到最大值时,但在电源状态百分比保持不变时变得相当稳定。

当我通过USB将手机连接到笔记本电脑时,文件管理器会保持打开状态(图1和图2)。 左侧栏中还有弹出图标(图3)。 网络共享时也会开启/关闭频繁的互联网连接通知(图4和图5)。 质量差的电缆会增加这些烦恼的频率。 所有类型的通知每分钟可以多次。 当电池达到高功率状态时,它们的速率会增加,但在电池充满电时会保持稳定。

  • 我做了wjandrea的提议 gsettings set org.gnome.desktop.media-handling automount-open false解决了automount-open问题,它的dmesg | tail dmesg | tail状态在这里 。

你看到大约10-30个窗口的错误(图1和2)和手机的右侧图标来回弹出(图3),只是保持设备连接到笔记本电脑

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

  • 我做了wjandrea的第二个提议gsettings set org.gnome.desktop.media-handling automount false 。 但是,三星手机的图标会一次又一次地在左侧栏中弹出。 它主要发生在我的笔记本电脑充满电时,这可能是电源管理中的一个问题。 它的dmesg | tail dmesg | tail状态在这里 (参见图3),这是第一次发生,主要是当我的笔记本电脑达到其最大电池状态时。

第二个dmesg的子集在这里

 [ 5.788819] wl: module license 'MIXED/Proprietary' taints kernel. [ 5.788820] Disabling lock debugging due to kernel taint [ 5.789154] input: HDA Intel PCH Headphone as /devices/pci0000:00/0000:00:1b.0/sound/card1/input8 [ 5.797453] wl: module verification failed: signature and/or required key missing - tainting kernel [ 5.812002] input: HDA Intel HDMI HDMI/DP,pcm=3 as /devices/pci0000:00/0000:00:03.0/sound/card0/input9 [ 5.812092] input: HDA Intel HDMI HDMI/DP,pcm=7 as /devices/pci0000:00/0000:00:03.0/sound/card0/input10 [ 5.812165] input: HDA Intel HDMI HDMI/DP,pcm=8 as /devices/pci0000:00/0000:00:03.0/sound/card0/input11 [ 5.981764] intel_rapl: Found RAPL domain package [ 5.981769] intel_rapl: Found RAPL domain core [ 5.981771] intel_rapl: Found RAPL domain uncore [ 5.981772] intel_rapl: Found RAPL domain dram [ 6.024117] wlan0: Broadcom BCM43a0 802.11 Hybrid Wireless Controller 6.30.223.248 (r487574) [ 6.030416] applesmc: key=561 fan=1 temp=33 index=33 acc=0 lux=2 kbd=1 [ 6.050130] wl 0000:03:00.0 wlp3s0: renamed from wlan0 [ 6.242168] Non-volatile memory driver v1.3 [ 6.428191] IPv6: ADDRCONF(NETDEV_UP): wlp3s0: link is not ready [ 6.862799] input: bcm5974 as /devices/pci0000:00/0000:00:14.0/usb1/1-5/1-5:1.2/input/input12 [ 6.862926] usbcore: registered new interface driver bcm5974 [ 7.053663] fuse init (API version 7.24) [ 7.329118] Bluetooth: Core ver 2.21 [ 7.329540] NET: Registered protocol family 31 [ 7.329543] Bluetooth: HCI device and connection manager initialized [ 7.329548] Bluetooth: HCI socket layer initialized [ 7.329551] Bluetooth: L2CAP socket layer initialized [ 7.329558] Bluetooth: SCO socket layer initialized [ 7.350445] usbcore: registered new interface driver btusb [ 7.355183] Bluetooth: hci0: BCM: chip id 73 build 0932 [ 7.356184] Bluetooth: hci0: BCM: product 05ac:828f [ 7.372192] Bluetooth: hci0: BCM20702B0 Generic USB Class 1 @ 20 MHz [ 7.391321] usb 1-3.1: USB disconnect, device number 5 [ 7.634631] usb 1-3.2: USB disconnect, device number 6 [ 8.363517] Bluetooth: BNEP (Ethernet Emulation) ver 1.3 [ 8.363521] Bluetooth: BNEP filters: protocol multicast [ 8.363525] Bluetooth: BNEP socket layer initialized [ 8.377953] Bluetooth: RFCOMM TTY layer initialized [ 8.377960] Bluetooth: RFCOMM socket layer initialized [ 8.377965] Bluetooth: RFCOMM ver 1.11 [ 78.943062] usb 1-1: USB disconnect, device number 2 [ 79.308530] usb 1-1: new high-speed USB device number 8 using xhci_hcd [ 79.437071] usb 1-1: New USB device found, idVendor=04e8, idProduct=6863 [ 79.437079] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [ 79.437083] usb 1-1: Product: SAMSUNG_Android [ 79.437086] usb 1-1: Manufacturer: SAMSUNG [ 79.437089] usb 1-1: SerialNumber: d068730a [ 79.978452] usbcore: registered new interface driver cdc_ether [ 79.981649] rndis_host 1-1:1.0 usb0: register 'rndis_host' at usb-0000:00:14.0-1, RNDIS device, 02:57:00:57:38:37 [ 79.981726] usbcore: registered new interface driver rndis_host [ 79.983854] rndis_host 1-1:1.0 enp0s20u1: renamed from usb0 [ 80.011403] IPv6: ADDRCONF(NETDEV_UP): enp0s20u1: link is not ready [ 1290.235637] usb 1-1: USB disconnect, device number 8 [ 1290.235777] rndis_host 1-1:1.0 enp0s20u1: unregister 'rndis_host' usb-0000:00:14.0-1, RNDIS device [ 1290.591107] usb 1-1: new high-speed USB device number 9 using xhci_hcd [ 1290.719964] usb 1-1: New USB device found, idVendor=04e8, idProduct=6863 [ 1290.719973] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [ 1290.719977] usb 1-1: Product: SAMSUNG_Android [ 1290.719981] usb 1-1: Manufacturer: SAMSUNG [ 1290.719984] usb 1-1: SerialNumber: d068730a [ 1290.722251] rndis_host 1-1:1.0 usb0: register 'rndis_host' at usb-0000:00:14.0-1, RNDIS device, 02:57:00:57:38:37 [ 1291.255806] rndis_host 1-1:1.0 enp0s20u1: renamed from usb0 [ 1291.277892] IPv6: ADDRCONF(NETDEV_UP): enp0s20u1: link is not ready [ 1870.316573] usb 1-1: USB disconnect, device number 9 [ 1870.316687] rndis_host 1-1:1.0 enp0s20u1: unregister 'rndis_host' usb-0000:00:14.0-1, RNDIS device [ 1871.735777] usb 1-1: new high-speed USB device number 10 using xhci_hcd [ 1871.865681] usb 1-1: New USB device found, idVendor=04e8, idProduct=6860 [ 1871.865687] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [ 1871.865690] usb 1-1: Product: SAMSUNG_Android [ 1871.865692] usb 1-1: Manufacturer: SAMSUNG [ 1871.865694] usb 1-1: SerialNumber: d068730a [ 2265.887618] usb 1-1: USB disconnect, device number 10 [ 2268.395967] usb 1-1: new high-speed USB device number 11 using xhci_hcd [ 2268.524992] usb 1-1: New USB device found, idVendor=04e8, idProduct=6860 [ 2268.524998] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [ 2268.525001] usb 1-1: Product: SAMSUNG_Android [ 2268.525003] usb 1-1: Manufacturer: SAMSUNG [ 2268.525005] usb 1-1: SerialNumber: d068730a [ 2389.754208] usb 1-1: USB disconnect, device number 11 [ 2451.283233] usb 1-1: new high-speed USB device number 12 using xhci_hcd [ 2451.412713] usb 1-1: New USB device found, idVendor=04e8, idProduct=6860 [ 2451.412719] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [ 2451.412722] usb 1-1: Product: SAMSUNG_Android [ 2451.412725] usb 1-1: Manufacturer: SAMSUNG [ 2451.412727] usb 1-1: SerialNumber: d068730a [ 4253.278282] usb 1-1: USB disconnect, device number 12 [ 4254.096939] usb 1-1: new high-speed USB device number 13 using xhci_hcd [ 4259.392860] usb 1-1: new high-speed USB device number 14 using xhci_hcd [ 4259.522162] usb 1-1: New USB device found, idVendor=04e8, idProduct=6860 [ 4259.522167] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [ 4259.522170] usb 1-1: Product: SAMSUNG_Android [ 4259.522173] usb 1-1: Manufacturer: SAMSUNG [ 4259.522175] usb 1-1: SerialNumber: d068730a [ 4259.731917] usb 1-1: USB disconnect, device number 14 [ 4260.068777] usb 1-1: new high-speed USB device number 15 using xhci_hcd [ 4260.200384] usb 1-1: New USB device found, idVendor=04e8, idProduct=6860 [ 4260.200389] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [ 4260.200392] usb 1-1: Product: SAMSUNG_Android [ 4260.200395] usb 1-1: Manufacturer: SAMSUNG [ 4260.200397] usb 1-1: SerialNumber: d068730a [ 4487.825779] usb 1-1: USB disconnect, device number 15 [ 4488.457511] usb 1-1: new high-speed USB device number 16 using xhci_hcd [ 4488.643676] usb 1-1: New USB device found, idVendor=04e8, idProduct=6860 [ 4488.643682] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [ 4488.643685] usb 1-1: Product: SAMSUNG_Android [ 4488.643687] usb 1-1: Manufacturer: SAMSUNG [ 4488.643689] usb 1-1: SerialNumber: d068730a [ 4507.592538] usb 1-1: USB disconnect, device number 16 [ 4507.929239] usb 1-1: new high-speed USB device number 17 using xhci_hcd [ 4508.115547] usb 1-1: New USB device found, idVendor=04e8, idProduct=6860 [ 4508.115553] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [ 4508.115556] usb 1-1: Product: SAMSUNG_Android [ 4508.115558] usb 1-1: Manufacturer: SAMSUNG [ 4508.115560] usb 1-1: SerialNumber: d068730a 

在此处输入图像描述

在此处输入图像描述

其他提案

  • Sneetsher。 它工作的第一天。 我会在下周告诉你它是如何运作的。

     > sudo -i > sed 's/LABEL="libmtp_usb_rules"/LABEL="libmtp_usb_rules"\n\n#Masi, ignore my phone\nATTR{idVendor}=="04e8", ATTR{idProduct}=="6863", GOTO="libmtp_rules_end"/g' /lib/udev/rules.d/69-libmtp.rules | sudo tee /etc/udev/rules.d/69-libmtp.rules \ udevadm control --reload-rules # TODO for long time monitoring 

电话:三星Galaxy S4 gt-i9506与淡马锡的非官方ROM CyanogenMod 13有足够的补丁
Ubuntu版本:16.04
Linux内核:4.4和4.6
Linux内核选项:wl
Bash:4.3.42(1)-release(x86_64-pc-linux-gnu)
笔记本电脑:2013年中期Macbook Air
USB:两个USB3端口(最高5 Gbps)( 此处官方规格)
网卡驱动程序:非免费的broadcom-sta-dkms (见这里 )
手机中的VPN:NordVPN US udp服务器
与路由器 – 防火墙wifi连接时笔记本电脑中的VPN:NordVPN EE udp服务器

  • 支持1:电源状态的负变化(-1%)与通知相关联。
  • 支持2:不稳定的互联网连接使用大量电力(\ Delta P = 1%)。
  • 支持3:受VPN保护的互联网连接大大减少了通知量。

dconf是检查这种情况的地方。

dconf是一个低级配置系统和设置管理。 其主要目的是在尚未配置存储系统的平台上为GSettings和KSettings提供后端。 这取决于GLib。 它是GNOME 3的一部分,是GConf的替代品。 维基百科〜

为此,您需要安装dconf编辑器 ,如下所示:

 sudo apt-get update sudo apt-get install dconf-tools 

要打开dconf编辑器

Alt + F2

要么

转到应用程序>系统工具> dconf编辑器

现在在dconf编辑器中,在侧栏中

org> gnome>桌面>媒体处理

取消选中automount-open选项。

以下是16.04中dconf-editor的屏幕截图:

16.04中的dconf-editor

@ Dhaval-Simaria的CLI版本答案:

 gsettings set org.gnome.desktop.media-handling automount-open false 

请注意,Ubuntu附带gsettings ; 它不需要安装。


编辑更新信息:由于错误消息报告无法装入,请尝试禁用automount:

 gsettings set org.gnome.desktop.media-handling automount false 

如果您运行Xubuntu,这非常简单,因为它有一个配置面板来选择自动挂载行为。 只需转到设置>硬件>可移动驱动器和介质,然后取消选中相关选项:

在此处输入图像描述

注意:以下所有命令都需要root权限,所以首先使用sudo -isudo su切换到root shell。 如果你想直接使用sudo 运行,请参阅使用sudo进行重定向时,我得到“权限被拒绝” 。

  • 为libmtpto设置udev规则忽略您的手机型号:

     sed 's/LABEL="libmtp_usb_rules"/LABEL="libmtp_usb_rules"\n\n#Masi, ignore my phone\nATTR{idVendor}=="04e8", ATTR{idProduct}=="6863", GOTO="libmtp_rules_end"/g' /lib/udev/rules.d/69-libmtp.rules > /etc/udev/rules.d/69-libmtp.rules; \ udevadm control --reload-rules 

    回滚:

     rm /etc/udev/rules.d/69-libmtp.rules 
  • 适用于所有USB节点

     echo "DRIVERS==\"usb\", RUN+=\"/bin/sh -c 'echo 1 > /sys%p/remove'\" > /etc/udev/rules.d/99-usb-fallen-leaves.rules; \ udevadm control --reload-rules 

    回滚:

     rm /etc/udev/rules.d/99-usb-fallen-leaves.rules 

    +重启

  • 这是另一种不需要重启的方法。

    1. 使用以下代码生成unbind和bind脚本:

      作为脚本usb-ctrl-gen.sh

       #!/bin/sh c=$(pwd) for o in "unbind" "bind" do cd $c echo Generate usb-$o.sh... echo "#!/bin/sh\n" > usb-$o.sh chmod +x usb-$o.sh for d in /sys/bus/pci/drivers/[uex]hci* ; do cd $d; find $d -type l -iname "0000*" -printf 'echo "%f" > ' -exec echo $d/$o \;; done >> usb-$o.sh done echo Done 

      或者一行:

       c=$(pwd); for o in "unbind" "bind"; do echo Generate usb-$o.sh...; echo "#\!/bin/sh\n" > usb-$o.sh; chmod +x usb-$o.sh; for d in /sys/bus/pci/drivers/[uex]hci*; do cd $d; find $d -type l -iname "0000*" -printf 'echo "%f" > ' -exec echo $d/$o \;; done >> usb-$o.sh; cd $c; done; echo Done 

      输出示例:

      usb-unbind.sh

       #!/bin/sh echo "0000:00:1a.0" > /sys/bus/pci/drivers/ehci-pci/unbind echo "0000:00:1d.0" > /sys/bus/pci/drivers/ehci-pci/unbind echo "0000:00:14.0" > /sys/bus/pci/drivers/xhci_hcd/unbind 

      usb-bind.sh

       #!/bin/sh echo "0000:00:1a.0" > /sys/bus/pci/drivers/ehci-pci/bind echo "0000:00:1d.0" > /sys/bus/pci/drivers/ehci-pci/bind echo "0000:00:14.0" > /sys/bus/pci/drivers/xhci_hcd/bind 
    2. 将usb-unbind.sh添加到/etc/profile以在引导时运行。 使用usb-bind.sh可在需要时启用USB控制器。

       echo $(pwd)/usb-unbind.sh > /etc/profile.d/usb-unbind-hook.sh 

    回到角色:

     rm /etc/profile.d/usb-unbind-hook.sh 

    参考: 如何从命令行重置USB设备?

您应该查看udev规则。 使用它们,您可以阻止一个设备,而不会影响任何其他USB设备。 您可以通过在/etc/udev/rules.d/创建文件来定义自己的udev规则,例如/etc/udev/rules.d/51-block-phone-mount.rules

现在找到设备的idVendor和idProduct。 这些都很好用,因为它们对产品来说大部分是唯一的,因此您可以使用它们来识别udev规则中的设备。

使用lsusb列出您的USB设备,并获得以下内容:

 Bus 002 Device 002: ID 8087:8002 Intel Corp. Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 001 Device 002: ID 8087:800a Intel Corp. Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 005 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub Bus 004 Device 002: ID 0424:2660 Standard Microsystems Corp. Bus 004 Device 003: ID 03f0:0024 Hewlett-Packard KU-0316 Keyboard Bus 004 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub 

相关部分是总线和设备,例如总线004和设备003.使用sudo lsusb -vs 004:003 | grep -E 'idProduct|idVendor' sudo lsusb -vs 004:003 | grep -E 'idProduct|idVendor'您将获得必要的信息,例如:

 idVendor 0x03f0 Hewlett-Packard idProduct 0x0024 KU-0316 Keyboard 

这意味着您的/etc/udev/rules.d/51-block-phone-mount.rules需要插入以下内容:

 #Phone automount block SUBSYSTEM=="usb", ATTRS{idVendor}=="03f0", ATTRS{idProduct}=="0024", ATTR{authorized}="0" 

您只需重新插入手机并检查其是否有效即可立即尝试。

我有一个类似的问题,一加一个有一个稍微不确定的usbsockets,这使得它每5分钟左右启动一个鹦鹉螺窗口。

我发现阻止这种情况的最有效方法是让udev完全忽略它,方法是匹配usb供应商和型号ID,然后将设备设置为未授权模式。 这样,您可以专门阻止此设备触发任何进一步的上游,例如自动挂载,而不会影响其他任何操作。

如何做udev黑名单 https://projectgus.com/2014/09/blacklisting-a-single-usb-device-from-linux/

三星手机指南 http://blog.vacs.fr/vacs/blogs/post.html?post=2010/12/24/How-to-repair-the-USB-not-detected-problem-on-Android -Samsung的手机