失去与 SDXC 驱动器的连接

失去与 SDXC 驱动器的连接

我的笔记本电脑有一个非常小的内置 SSD,所以我将 /home 移到了我的 SDXC 卡上。我已按如下方式设置了 fstab。当我第一次启动时,它工作得很好,但随后它就丢​​失了挂载,无法恢复。

我尝试了网上的各种方法。我甚至关闭了 USB 自动挂载,以为是它造成了干扰,但还是没用。

我想知道它是否会随着时间的推移禁用 SDXC 通信所用的 USB 集线器。关于如何告诉 Ubuntu 18.04 永远不要关闭 USB 或断开外部驱动器,有什么好的建议吗?

   # /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
# / was on /dev/nvme0n1p6 during installation
UUID=e7980c7d-441b-4814-a0cc-74ac44139f12 /               ext4    errors=remount-ro 0       1
# /boot/efi was on /dev/nvme0n1p2 during installation
UUID=E018-1B48  /boot/efi       vfat    umask=0077      0       1
/swapfile                                 none            swap    sw              0       0
UUID=62f48898-00de-40c1-842d-6623583219c4   /home   ext4     errors=remount-ro 0       2

更新:尝试过这个,

https://hamwaves.com/usb.autosuspend/en/

我在第一步就停滞了……这是卡的 lsusb 条目

Bus 002 Device 010: ID 045e:090c Microsoft Corp. 
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               3.00
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0         9
  idVendor           0x045e Microsoft Corp.
  idProduct          0x090c 
  bcdDevice           29.10
  iManufacturer           1 Microsoft
  iProduct                2 SD Card
  iSerial                 3 201408282030
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           44
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          4 CARD READER
:

这是我的 usb/设备目录

1-0:1.0  1-1.4:1.0  1-4.1:1.0  1-6:1.0  2-1:1.0    2-1.3:1.0  2-4.1:1.0  usb2
1-1  1-4        1-4.3      1-6:1.1  2-1.2      2-4        2-4.2
1-1:1.0  1-4.1      1-4.3:1.0  2-0:1.0  2-1.2:1.0  2-4.1      2-4.2:1.0
1-1.4    1-4:1.0    1-6        2-1  2-1.3      2-4:1.0    usb1

我做了递归 grep,产品 ID 为 0x090c,但它不在任何这些文件中?

第二次更新:grep -r 090c(无 0x)找到了该文件,然后这些说明似乎解决了我的问题!

3rD 更新:已完成一半。当我断开电源时它不会掉线,但在使用过程中它似乎仍会随机掉线 :/

第四次更新:删除 tlp 允许此解决方案可靠地将控制参数设置为开启....但它仍然会降低音量

答案1

好的。

首先确保您没有运行 TLP 或任何其他电源管理插件。虽然理论上有办法让 TLP 不影响 USB 设备,但我无法让它工作。

那么,这个解决方案有效: https://hamwaves.com/usb.autosuspend/en/

请注意,您的设备控制文件可能不在本文所述的位置。您不需要它来使用永久解决方案,但您需要它来测试它是否有效。在我的例子中,它实际上位于 /sys/bus/usb 文件树中的 3 个不同位置(/sys/bus/usb/devices/usb2/2-1/2-1.3/power/control、/sys/bus/usb/devices/2-1/2-1.3/power/control 和 /sys/bus/usb/devices/2-1.3/power/control)。

我通过递归查找 idProduct 找到了它们没有前导 0x (例如 090c 不是 0x090c)。命令是在 /sys/bus/usb 目录中执行的“grep -r 090c *”。

我必须将 power/control 设置为 on,并将 power/autosuspend 和 power/autosuspend_delay_ms 设置为 -1。我必须对 SD 卡设备和 USB 集线器执行此操作。

我的规则文件如下所示:

ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="045e", ATTR{idProduct}=="090c", TEST=="power/control", ATTR{power/control}="on"
ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="045e", ATTR{idProduct}=="090c", TEST=="power/autosuspend", ATTR{power/autosuspend}="-1"
ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="045e", ATTR{idProduct}=="090c", TEST=="power/autosuspend_delay_ms", ATTR{power/autosuspend_delay_ms}="-1"
ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="045e", ATTR{idProduct}=="091a", TEST=="power/control", ATTR{power/control}="on"
ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="045e", ATTR{idProduct}=="091a", TEST=="power/autosuspend", ATTR{power/autosuspend}="-1"
ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="045e", ATTR{idProduct}=="091a", TEST=="power/autosuspend_delay_ms", ATTR{power/autosuspend_delay_ms}="-1"
ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="045e", ATTR{idProduct}=="090b", TEST=="power/control", ATTR{power/control}="on"
ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="045e", ATTR{idProduct}=="090b", TEST=="power/autosuspend", ATTR{power/autosuspend}="-1"
ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="045e", ATTR{idProduct}=="090b", TEST=="power/autosuspend_delay_ms", ATTR{power/autosuspend_delay_ms}="-1"

最后,我不得不重新打开自动挂载(我已经将其关闭),因为我的机器似乎仍然偶尔会断开连接,但使用自动挂载后它似乎马上就恢复了。

相关内容