Git Product home page Git Product logo

potato.fastboot's Introduction

Potato.Fastboot

Build Status NuGet Version Nuget CodeFactor GPL-3.0

A small wrapper over LibUsbDotNet for easy and convenient communication with mobile devices in Fastboot mode.

Example

var fb = new Fastboot();

// Connect to first available device
fb.Connect();

// Get product name (generic variable)
var product = fb.Command("getvar:product"); // Example output: davinci

// Print serial number
Console.WriteLine(fb.GetSerialNumber());

// Print product name
Console.WriteLine(product.Payload);

// Upload local file with path
fb.UploadData("recovery.img");

// or with FileStream
fb.UploadData(new FileStream("recovery.img", FileMode.Open));

// Flash uploaded data to recovery partition
var res = fb.Command("flash:recovery");

// Print status
Console.WriteLine(res.Status); // Example output: Okay

// Boot uploaded ramdisk
fb.Command("boot");

Short documentation

Methods of Fastboot object

Wait(): void

Wait for any device, timeout: 25 seconds.

Connect(): void

Connect to first available device.

Disconnect(): void

Disconnect the device and dispose some resources.

GetSerialNumber(): string

Get device serial number.

Command(byte[]): Response

Send command (as bytes array) and read response.

Command(string): Response

Send command (as simple string) and read response.

UploadData(FileStream): void

Upload data from FileStream.

UploadData(string): void

Upload data from specified file.

GetDevices(): string[]

Get an array of serial numbers of connected devices.

Response (class)

  • Status: Status - status convered from header
  • Payload: string - response from device
  • RawData: byte[] - raw response

Status (enum)

  • Data
  • Fail
  • Info
  • Okay
  • Unknown

License

GNU General Public License v3.0

potato.fastboot's People

Contributors

mashed-potatoes avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

potato.fastboot's Issues

Bug of fastboot? or exactly on device? I tried to flash sparsed images

public bool UploadData(string path)
{
    //WRITE_D
    FileStream stream = new FileStream(path, FileMode.Open);
    string madx = Command("getvar:max-download-size").Payload;
    intMAX_DWN_SIZE = (int)new Int32Converter().ConvertFromString(madx);
    long totalenremain = stream.Length;
    long curlenremain = totalenremain >= MAX_DWN_SIZE ? MAX_DWN_SIZE : totalenremain;
    while (totalenremain > 0)
    {
        if (SendDataCommand(curlenremain))
        {
            var partname = stream.Name.Split('.')[0].Split('\\').Last();
            var writeEp = device.OpenEndpointWriter(WriteEndpointID.Ep01);
            LOG(0, "[Fastboot] Sending: ", partname);
            while (curlenremain > 0)
            {
                if (curlenremain < BLOCK_SIZE)
                {
                    TransferBlock(stream, new byte[curlenremain], (int)curlenremain);
                    totalenremain -= curlenremain;
                    curlenremain = 0;
                }
                else
                {
                    TransferBlock(stream, new byte[BLOCK_SIZE], BLOCK_SIZE);
                    totalenremain -= BLOCK_SIZE;
                    curlenremain -= BLOCK_SIZE;
                }
                Progress((int)(stream.Length - totalenremain), (int)stream.Length);
            }
            stream.Close();
            stream.Dispose();
            //READ_ED
            var resBuffer = new byte[64];
            ReadEp.Read(resBuffer, DefaultRWTimeout, out _);
            var strBuffer = Encoding.ASCII.GetString(resBuffer);
            if (strBuffer.Length < HEADER_SIZE)
                throw new Exception("Invalid response from device: " + strBuffer);
            if (GetStatus(new string(strBuffer.Take(HEADER_SIZE).ToArray())) != FastbootStatus.Ok)
                throw new Exception("Invalid status: " + strBuffer);
            else
            {
                LOG(0, "[Fastboot] Writing: ", partname);
                var res = Command("flash:" + partname).Payload;
                if (res.Contains("table doesn't exist"))
                {
                    LOG(1, "Skip Partition. ", res);
                    break;
                }
            }
        }
        else
        {
            stream.Close();
            stream.Dispose();
            return false;
        }
    }
    return true;
}

this code writes the fastboot image.
ALL good, but ramdisk.img wont flash
like my device aborting pipe...

Invalid Response from Device Exception

When I send a large (> 800MB) file to the device, I get an exception: System.Exception: Invalid response from device! (data size: 834666496) at Potato.Fastboot.Fastboot.SendDataCommand(Int64 size) at Potato.Fastboot.Fastboot.UploadData(FileStream stream) at Potato.Fastboot.Fastboot.UploadData(String path)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.