How to Fix a Read-Only USB Drive Error
A USB drive that’s mounted as read-only is frustrating — you can read files but can’t write, delete, or modify anything. This usually happens due to filesystem issues, hardware problems, or missing drivers.
Check the Current State
First, identify how the drive is mounted and what filesystem it uses:
lsblk -f
Look for your USB device (usually /dev/sdb1 or similar) and note its filesystem type and mount point.
Get detailed error messages from the kernel:
dmesg | tail -50
Look for lines mentioning your USB device — they’ll often indicate why it’s read-only.
Common Causes and Fixes
NTFS Filesystem on Linux
If your drive uses NTFS (common with Windows), Linux can’t write to it without the proper driver:
sudo apt install ntfs-3g
Then unmount and remount:
sudo umount /media/user/USBDRIVE
sudo mount -t ntfs-3g /dev/sdb1 /media/user/USBDRIVE
Filesystem Errors
If the drive is ext4 or another Linux filesystem, check for corruption:
sudo fsck -n /dev/sdb1
The -n flag runs read-only. If errors are found, remove the -n and run the actual repair (drive must be unmounted):
sudo umount /dev/sdb1
sudo fsck /dev/sdb1
FAT32 Filesystem Issues
For FAT32 drives, use fsck.fat:
sudo fsck.fat -r /dev/sdb1
Hardware Write Protection
Some USB drives have a physical write-protect switch on the side. Check for it and toggle it off if present.
If the drive has no physical switch, the controller may have enabled write protection due to detected problems. This is a hardware safeguard and usually means the drive is failing.
Remount as Read-Write
If the filesystem itself is fine but just mounted read-only:
sudo mount -o remount,rw /dev/sdb1
Or if mounted at a specific path:
sudo mount -o remount,rw /media/user/USBDRIVE
Permanent Fix in /etc/fstab
To avoid the read-only mount on future connections, add an entry to /etc/fstab. First get the UUID:
sudo blkid /dev/sdb1
Then add a line to /etc/fstab:
UUID=YOUR-UUID-HERE /mnt/usb ntfs-3g defaults,uid=1000,gid=1000 0 0
Replace YOUR-UUID-HERE and adjust the mount point and filesystem type as needed.
When the Drive is Actually Failing
If dmesg shows I/O errors, SMART warnings, or hardware failures, the drive itself is dying. You may be able to recover data by:
sudo ddrescue /dev/sdb1 /path/to/backup.img
Then mount the image to extract files:
sudo mount -o loop /path/to/backup.img /mnt/recovery
At this point, replacement is the best option.
Debugging with dmesg
Always post relevant dmesg output when asking for help — it often contains the root cause. Focus on lines with timestamps near when you plugged in the drive:
dmesg | grep -i usb
This filters for USB-related kernel messages and makes troubleshooting much faster.