magnusja / libaums

Open source library to access USB Mass Storage devices on Android without rooting your device
Apache License 2.0
1.26k stars 270 forks source link

Cannot read a UsbFile content #409

Open auloma04 opened 9 months ago

auloma04 commented 9 months ago

Hello everyone. I am trying to read the content of my USB device.

I can successfully list the content of the USB key, list files etc ..
I am supposed to have a file named "network.ini" on the USB key. The file is well listed

Problem

When I try to read the content of the file, i get the error: java.io.IOException: MAX_RECOVERY_ATTEMPTS Exceeded while trying to transfer command to device, please reattach device and try again After having looked at the logcat, I saw that the Stack trace of the error mentions the error : System.err: Caused by: java.io.IOException: Could not read from device, result == -1 errno 0 null

So following the documentation advices, I tried to use libusb:

Expected behavior

What I want is to convert the content of the file into a String. (its content is very light)

How I do that after having accessed the fileSystem of the UsbMassStorageDevice:

public void readFs(FileSystem fs) throws IOException {
        Log.d(TAG, "Capacity: " + fs.getCapacity());
        Log.d(TAG, "Occupied Space: " + fs.getOccupiedSpace());
        Log.d(TAG, "Free Space: " + fs.getFreeSpace());
        Log.d(TAG, "Chunk size: " + fs.getChunkSize());

        UsbFile root = fs.getRootDirectory();

        UsbFile[] files = root.listFiles();
        for(UsbFile file: files) {
            Log.d(TAG, "File:" + file.getName() + " is a dir: " + file.isDirectory());
            if(!file.isDirectory()) {
                readFile(file, fs);
            }
        }
    }

    public void readFile(UsbFile file, FileSystem fs) throws IOException {
        Log.d(TAG, "readFile: " + file.getName());
        InputStream is = UsbFileStreamFactory.createBufferedInputStream(file, fs);
        byte[] buffer = new byte[fs.getChunkSize()];

        is.read(buffer);
    }

image

I spent a lot of time on this issue and have no more ideas to solve this quite urgent problem ... Thanks for your help

auloma04 commented 9 months ago

Github for reproduction: https://github.com/auloma04/android-usb-reader

magnusja commented 7 months ago

Unfortunately, it looks like a low level communication errror. So not much I can help. Do other apps allowing USB access work?

hsycc commented 3 months ago

Hello, have you solved this problem yet @auloma04