Android-DFU-Library: Galaxy S9/S7 Verification fail

I am having success with my Pixel 2/Ipad 2 with the DFU update, but for some reason the Galaxy S9 always fails verification.

The biggest difference between the Pixel 2/Galaxy S9 is the speed. The S9 is updating very fast (~6kbps average).

Is there a way to lower the MTU sizes? Any setting I should try?

06-29 02:45:37.517 16130-17796/com.sigsauer.bdx E/DfuImpl: Executing object failed (error 11) (extended error 12): EXTENDED ERROR
06-29 02:45:37.518 16130-17796/com.sigsauer.bdx E/DfuImpl: Extended Error details: Verification failed

Here are my gradle settings:

compileSdkVersion 27
targetSdkVersion 27

implementation  "com.android.support:support-v4:27.1.1"
implementation  "com.android.support:support-v13:27.1.1"
implementation 'com.android.support:appcompat-v7:27.1.1'
implementation 'no.nordicsemi.android:dfu:1.6.1'

Here is how I start the update:

public void StartNordicDFU(File myFile, String address, String name)
    {

        Log.i(TAG,"StartNordicDFU ");

        final DfuServiceInitiator starter = new DfuServiceInitiator(address)
                .setDeviceName(name)
                .setKeepBond(true);
// If you want to have experimental buttonless DFU feature supported call additionally:
        starter.setUnsafeExperimentalButtonlessServiceInSecureDfuEnabled(true);
// but be aware of this: https://devzone.nordicsemi.com/question/100609/sdk-12-bootloader-erased-after-programming/
// and other issues related to this experimental service.

// Init packet is required by Bootloader/DFU from SDK 7.0+ if HEX or BIN file is given above.
// In case of a ZIP file, the init packet (a DAT file) must be included inside the ZIP file.
        Uri mFileStreamUri = Uri.fromFile(myFile.getAbsoluteFile());

        starter.setZip(mFileStreamUri, myFile.getPath());
        //starter.setForceDfu(true);
       // starter.setDisableNotification(true);
        starter.setForeground(true);


        if ( android.os.Build.VERSION.SDK_INT > 26) {
            starter.createDfuNotificationChannel(this);
        }

        final DfuServiceController controller = starter.start(this, DfuService.class);
// You may use the controller to pause, resume or abort the DFU process.
}

About this issue

  • Original URL
  • State: closed
  • Created 6 years ago
  • Comments: 27 (14 by maintainers)

Commits related to this issue

Most upvoted comments

I was experiencing this issue on Huawei phones. Using the default PRN value didn’t work, but setting it to 6 fixes it.