Як запобігти появі сповіщень та спливаючих вікон, коли телефон підключений до USB?


12

Умова: сторонні сповіщення та спливаючі вікна, коли телефон підключений до USB.
Диференціальні умови: збій управління живленням через USB, збій управління мережевою карткою.
Підтримка: попередження, спливаючі вікна та dmesg попередження виникають здебільшого, коли стан живлення досягає максимально високого рівня, але стають досить стабільними, коли відсоток стану потужності залишається постійним.

Менеджер файлів відкривається, коли телефон підключений до ноутбука через USB (рис. 1 і 2). У лівій частині панелі також є спливаючі значки (мал. 3). Також є часті сповіщення про ввімкнення / вимкнення підключення до Інтернету під час прив’язки (рис. 4 і 5). Кабель поганої якості збільшує частоту цих роздратовань. Усі типи сповіщень можуть бути багато разів на хвилину. Їх швидкість збільшується, коли акумулятор досягає стану високої потужності, але залишається стабільним, коли акумулятор повністю заряджений.

  • Я роблю пропозицію wjandrea, gsettings set org.gnome.desktop.media-handling automount-open falseяка вирішує automount-openпитання, його dmesg | tailстан тут .

Ви бачите приблизно 10-30 вікон про помилку (рис. 1 і 2) та праву піктограму телефону, що вискакує вперед-назад (мал. 3), коли просто тримаєте пристрій підключеним до ноутбука

введіть тут опис зображення

введіть тут опис зображення

введіть тут опис зображення

  • Я роблю другу пропозицію wjandrea gsettings set org.gnome.desktop.media-handling automount false. Однак піктограма телефону Samsung знову і знову починає з'являтися в лівій смузі. Це відбувається в основному, коли мій ноутбук повністю заряджений, тому це може бути проблемою в управлінні енергією. Його 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
    

Телефон: Samsung Galaxy S4 gt-i9506 з неофіційним ПЗУ Temasek CyanogenMod 13 з достатніми патчами
Версії Ubuntu: 16.04
Linux ядро: 4.4 і 4.6
Параметри ядра Linux: wl
Bash: 4.3.42 (1) -випуск (x86_64-pc-linux- gnu)
Ноутбук: середина 2013 року Macbook Air
USB: два порти USB3 (до 5 Гбіт / с) ( тут офіційні характеристики)
Драйвери мережевих карт: невільний широкосмуговий stak-dkms (див. тут )
VPN в телефоні: NordVPN US udp сервер
VPN у ноутбуці при з'єднанні Wi-Fi з брандмауером: NordVPN EE udp-сервер

  • Підтримка 1: негативна зміна стану живлення (-1%) пов'язана з повідомленнями.
  • Підтримка 2: нестабільне підключення до Інтернету використовує значну кількість енергії (\ Delta P = 1%).
  • Підтримка 3: Підключення до Інтернету, захищене VPN, значно зменшує кількість сповіщень.

3
На всякий випадок, якщо ви цього ще не зробили (і також тому, що мені цікаво, чи це впливає на поведінку), якщо ви зробите Налаштування системи-> Деталі-> Знімний носій та позначте, Never prompt or start programs on media insertionчи це змінює "Файли" 'відкриття темпераментним кабелем? Зазвичай я це роблю, тому що я ненавиджу, коли я вставляю багатороздільний USB або зовнішній HD і отримую відразу декілька екземплярів файлів.
pHeLiOn

@pHeLiOn Так, я думаю, що це те саме, що відповідь wjandrea.
Лео Леопольд Герц 준영

@Masi Це інший параметр dconf org.gnome.desktop.media-handling autorun-never, але він робить те саме, що він переосмислює org.gnome.desktop.media-handling automount-open.
wjandrea

@Masi, У вас є тільки порти USB3?
user.dz

1
@Sneetsher Так: Two USB 3 ports (up to 5 Gbps). Тут специфікації support.apple.com/kb/SP678?locale=en_US
Léo Léopold Hertz 준영

Відповіді:


3

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> desktop> обробка медіа

Зніміть прапорець біля параметра автоматичного відкриття .

Далі йде знімок екрана редактора dconf 16.04:

dconf-редактор 16.04


1
це має побічний ефект: змусити ubuntu не автоматизувати жодну файлову систему, його кувалда зламає гайку, як кажуть
Amias

1
@Masi Команда, яку ви шукаєте, - це gsettings set org.gnome.desktop.media-handling automount-open false. З мого досвіду роботи з dconf, двокрапка вказує на відображення, як і у випадку з параметрами клавіатури.
wjandrea

1
@amiaschanner Я тільки що спробував це, і це насправді автоматично. Відключення - це автоматичне відкриття накопичувача.
wjandrea

@Masi Я приєднав знімок екрана dconf-редактора в 16.04, працюючи аналогічно тому, що 14.04.
Дхаваль Сімарія

2

Версія CLI відповіді @ Dhaval-Simaria:

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

Зауважте, що Ubuntu поставляється разом gsettings; його не потрібно встановлювати.


Редагування для оновленої інформації: Оскільки повідомлення про помилки повідомляють про збій у монтажі, спробуйте вимкнути автоматичне вимикання:

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

4
dconf-editor- графічний фронт gsettings. Вам це не потрібно, але це часто корисно.
wjandrea

@wjandrea вдячний за показ іншої (можливо, простішої) сторони рішення.
Дхаваль Сімарія

1
@Masi Ах, ваше початкове запитання було не дуже зрозумілим, тому я припустив, що сповіщення, про які ви згадали, були спливаючими nautilusвікнами. Я відредагував свою відповідь, щоб повідомити про нову інформацію.
wjandrea

Обох цих команд недостатньо. Я почав отримувати значок лівої панелі знову і знову після 10 годин використання ноутбука.
Лео Леопольд Герц 준영

@Masi, чому ти продовжуєш видаляти свої коментарі? Це робить цю нитку важкою для читання для майбутніх читачів, коли ви це робите.
wjandrea

1

Якщо ви запускаєте Xubuntu, це дуже просто, оскільки на ньому є панель конфігурації для вибору автоматичної поведінки. Просто перейдіть у Налаштування> Обладнання> Знімні диски та носії інформації та зніміть відповідні параметри:

введіть тут опис зображення


1

Примітка: Усі команди нижче потрібні живленням root, тому перейдіть до кореневої оболонки спочатку sudo -iабо sudo su. Якщо ви хочете запустити безпосередньо sudo <cmd>, див. Розділ Під час використання sudo з перенаправленням мені отримують "дозвіл відмовлено" .

  • Встановіть правило udev для ігнорування libmtpto моделі телефону:

    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. Створіть розв’язування та зв’язування сценаріїв за допомогою цього:

      Як сценарій 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-пристрій з командного рядка?


1
Як можна скласти правило, яке ігнорує всі телефони та всі пристрої USB? Я просто хочу їх чітко запустити на ноутбуці, коли мені потрібно. Краще взагалі нічого не мати. Я не хочу мати лише один телефон, бо у мене їх багато, і багато інших пристроїв теж. Мова йде не лише про один пристрій.
Лео Леопольд Герц 준영

1
@Masi оновлення відповіді.
user.dz

1

Ви повинні вивчити правила udev. За допомогою них ви можете заблокувати один пристрій, не впливаючи на інші USB-пристрої. Ви можете визначити власні правила udev, створивши файл /etc/udev/rules.d/, наприклад, у /etc/udev/rules.d/51-block-phone-mount.rules

Тепер знайдіть idVendor та idProduct пристрою. Це добре використовувати, оскільки вони в основному унікальні для продукту, тому ви можете використовувати їх для ідентифікації пристрою в правилі udev.

Перерахуйте свої USB-пристрої за допомогою lsusbта отримайте щось подібне:

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'Ви отримаєте необхідну інформацію, наприклад:

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"

Ви можете спробувати це миттєво, просто підключивши телефон і перевіривши, чи працює він.


0

У мене є аналогічна проблема з одним плюс одним, який має злегка iffy usb-розетку, це змушує запускати вікно nautilus кожні 5 хвилин або близько того.

Найефективнішим способом, який я знайшов, щоб запобігти цьому, було змусити udev ігнорувати його повністю, порівнюючи ідентифікатор постачальника usb та ідентифікатор моделі, а потім встановлювати пристрій у несанкціонований режим. Таким чином ви спеціально не дозволяєте цьому пристрою ініціювати що-небудь далі за течією, наприклад, автоматичне управління, не зачіпаючи нічого іншого.

як зробити чорний список udev https://projectgus.com/2014/09/blacklisting-a-single-usb-device-from-linux/

посібник для Samsung телефонів http://blog.vacs.fr/vacs/blogs/post.html?post=2010/12/24/How-to-repair-the-USB-not-detected-problem-on-Android -Samsung-телефони


1
Чи можете ви надати коротку інформацію про свою відповідь, а не відповідь лише для посилань. Я не розумію, чим відрізняється ваша відповідь на практиці, від встановлення media-handlingдо ні automount-open. Здається, посилання має певне рішення на стороні телефону. Можливо, у моїй проблемі є дві проблеми. Я використовую телефон Samsung (Galaxy S4 gt-i9506),
Лео Леопольд Герц 준영
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.