GithubHelp home page GithubHelp logo

balena-io / etcher Goto Github PK

View Code? Open in Web Editor NEW
28.7K 439.0 2.0K 98.34 MB

Flash OS images to SD cards & USB drives, safely and easily.

Home Page: https://etcher.io/

License: Apache License 2.0

CSS 0.34% JavaScript 0.34% HTML 0.04% Shell 0.08% TypeScript 99.21%
etcher sd-cards cross-platform usb-drives

etcher's People

Contributors

ab77 avatar aethernet avatar balena-ci avatar builder555 avatar chrisys avatar dfunckt avatar dimitrisnl avatar dlech avatar flowzone-app[bot] avatar jhermsmeier avatar jsoref avatar jsreds avatar jviotti avatar klutchell avatar lizzieepton avatar lucianbuzzo avatar lurch avatar mcraa avatar nazrhom avatar otaviojacobi avatar renovate-bot avatar roderickqiu avatar shawaj avatar shou avatar sradevski avatar stefan-mihaila avatar thundron avatar vedantmgoyal9 avatar zvin avatar zwhitchcox avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

etcher's Issues

Add a "burn another" button on completion

The completion screen will then have two buttons:

  1. Completely start over by reseting every selection.
  2. Burning the same image you selected before to another drive (basically keeps the image selection and resets the rest).

TypeError: Cannot read property 'device' of undefined

This error happens when clicking the disabled "Burn" button before selecting a drive.

TypeError: Cannot read property 'device' of undefined
    at burn (file:///Users/jviotti/Projects/resin/etcher/lib/browser/app.js:161:44)
    at fn (eval at <anonymous> (/Users/jviotti/Projects/resin/etcher/node_modules/angular/angular.js:13567:15), <anonymous>:4:917)
    at callback (/Users/jviotti/Projects/resin/etcher/node_modules/angular/angular.js:23934:17)
    at Scope.$eval (/Users/jviotti/Projects/resin/etcher/node_modules/angular/angular.js:16251:28)
    at Scope.$apply (/Users/jviotti/Projects/resin/etcher/node_modules/angular/angular.js:16351:25)
    at hero-progress-button.<anonymous> (/Users/jviotti/Projects/resin/etcher/node_modules/angular/angular.js:23939:23)
    at defaultHandlerWrapper (/Users/jviotti/Projects/resin/etcher/node_modules/angular/angular.js:3358:11)
    at hero-progress-button.eventHandler (/Users/jviotti/Projects/resin/etcher/node_modules/angular/angular.js:3346:9)
    at hero-progress-button.d.util.hasFunction.f.(anonymous function) (file:///Users/jviotti/Projects/resin/etcher/node_modules/trackjs/tracker.js:3:492) undefined

Add bmap support

Bmap Tools are a set of utilities implemented by the Tizen project that allows significant speed when writing images to drives.

Given a sparse image file (a file with unmapped holes), we can create a bmap file (an XML manifest) that gives the client information about what blocks actually contain data, and which don’t (e.g: are holes). Using this information, we can only write the sectors that are really needed, and thus avoid a lot of unnecessary I/O to speed up the writing.

Bmap files can only be generated on Linux at the moment, so we only focus on writing an image that already contains a corresponding bmap file.

This feature should be implemented by extending the already existing etcher-image-write NPM module

The module should include an option to pass the contents of a Bmap file (or a path to it, maybe) and use this information to only write what’s needed. This feature should be implemented in a cross platform way.

See https://source.tizen.org/documentation/reference/bmaptool/introduction for more information about how this works. Tizen provides a Python implementation for the problem described above, so we can use that as a guide.

Allow a way to re-select in the first two steps

If you made a mistake the in the selection of an image or drive, you basically have to close and re-open the application to select again. There should be an easy way for the user to re-select.

Maybe allow clicking on the label to unselect?

Herostratus freezes Fedora 22

When executing packaged x64 Herostratus on Fedora 22 the whole system freezes and the app never starts.

The app do display the "not enough permissions" window when running without sudo.

Could not call remote function ``

According to TrackJS, this error happened on Windows 8.1 when clicking "Burn" when a burn was already in process (around ~30%).

Could not call remote function ``. Check that the function signature is correct. Underlying error: Error processing argument -1.
Error: Could not call remote function ``. Check that the function signature is correct. Underlying error: Error processing argument -1.
    at callFunction (C:\Users\Alexandros\resin-etcher\node_modules\electron-prebuilt\dist\resources\atom.asar\browser\lib\rpc-server.js:203:11)
    at EventEmitter.<anonymous> (C:\Users\Alexandros\resin-etcher\node_modules\electron-prebuilt\dist\resources\atom.asar\browser\lib\rpc-server.js:293:12)
    at emitMany (events.js:108:13)
    at EventEmitter.emit (events.js:182:7)
    at EventEmitter.<anonymous> (C:\Users\Alexandros\resin-etcher\node_modules\electron-prebuilt\dist\resources\atom.asar\browser\api\lib\web-contents.js:129:25)
    at emitTwo (events.js:87:13)
    at EventEmitter.emit (events.js:172:7)

Herostratus doesn't elevate on first run on OS X

The first time you open the app (whether from the source or from a package), the elevation dialog is shown, but afterwards the elevated app never runs.

Repeating the process makes it run successfully.

The issue is only reproducible by waiting some minutes (until sudo password cache is clearer).

Prevent clicking burn button when progress is zero

We currently prevent the "Burn" button to be clicked if the percentage is 0, as an attempt to prevent the user to try to burn twice, however at the beginning of a burn progress, the percentage is 0, and we still allow to click it for some seconds.

Add dfu support

This feature would allow Etcher to flash DFU devices, like the Intel Edison. The task would be to create a brand new NPM module, named something like etcher-dfu, which implements DFU support in a cross platform way.

Challenges:

  • Make it work in a cross platform way.
  • Make it work without external dependencies.
  • Make it work when being packaged inside an ASAR archive.

The final module should expose a function that returns an EventEmitter instance which emits stdout and stderr in real time. Some stdin support might be required depending on the implementation, which should preferably be handled by the module itself instead of prompting the user if possible.

This module can be implemented using external tools like dfu-util as long as the user is not required to install such tool himself (it's bundled in the package instead).

Native addons may be fine here, but only if really necessary.

Error: write EPIPE on packaged OS X

I get the following error alert when running Herostratus packaged for OS X in El Capitan.

screenshot 2015-11-18 14 11 45

The error doesn't happen when running from the source code directly.

Blank screen on start

Using ArchLinux x64 with node 5.5.0 and bower 1.7.2, upon start I have this blank screen:

screenshot_2016-01-25_22-51-03

No log in the console beyond the normal node start info. Same thing when creating stand-alone executable with the included Makefile.

npm test passes successfully, and npm install has only these warnings for optional dependencies.

npm WARN optional Skipping failed optional dependency //elevator:
npm WARN notsup Not compatible with your operating system or architecture: [email protected]
npm WARN optional Skipping failed optional dependency //removedrive:
npm WARN notsup Not compatible with your operating system or architecture: [email protected]
npm WARN optional Skipping failed optional dependency /resin-image-write/diskpart:
npm WARN notsup Not compatible with your operating system or architecture: [email protected]

Don't seem like any already existing issue reported. Any suggestions what to test?

No drives detected on packaged Ubuntu

I get the following on Ubuntu:

Unhandled rejection Error: Command failed: /bin/sh -c "/home/jviotti/Desktop/Herostratus-linux-x64/resources/app.asar/node_modules/drivelist/scripts"/linux.sh
/bin/sh: 1: /home/jviotti/Desktop/Herostratus-linux-x64/resources/app.asar/node_modules/drivelist/scripts/linux.sh: not found

    at ChildProcess.exithandler (child_process.js:209:12)
    at emitTwo (events.js:87:13)
    at ChildProcess.emit (events.js:172:7)
    at maybeClose (internal/child_process.js:764:16)
    at Socket.<anonymous> (internal/child_process.js:319:11)
    at emitOne (events.js:77:13)
    at Socket.emit (events.js:169:7)
    at Pipe._onclose (net.js:469:12)

Drivelist executes scripts as child processes to discover the drives, however the fact that everything is packaged into an asar makes the scripts inaccessible.

This is probably the same issue as #28

Allow passing a URL and streaming an image to the drive.

This is a major feature that needs to re-architect the code to pass a readable stream directly instead of a file name to the writer first.

  • Implement UI to be able to paste a URL as the first step.
  • Handle network error conditions gracefully.
  • Handle invalid URLs or other invalid condition.

Improve footer text

The footer should say: "AN OPEN SOURCE PROJECT BY RESIN.IO" instead of "POWERED BY RESIN.IO".

Fix sporadic TypeError: Cannot read property 'then' of undefined

This error seems to happen from time to time during burning:

TypeError: Cannot read property 'then' of undefined
    at burn (file:///Users/jviotti/Projects/resin/resin-etcher/build/browser/app.js:103:42)
    at fn (eval at <anonymous> (file:///Users/jviotti/Projects/resin/resin-etcher/build/browser/app.js:22559:15), <anonymous>:4:917)
    at callback (file:///Users/jviotti/Projects/resin/resin-etcher/build/browser/app.js:32807:17)
    at Scope.$eval (file:///Users/jviotti/Projects/resin/resin-etcher/build/browser/app.js:25246:28)
    at Scope.$apply (file:///Users/jviotti/Projects/resin/resin-etcher/build/browser/app.js:25346:25)
    at hero-progress-button.<anonymous> (file:///Users/jviotti/Projects/resin/resin-etcher/build/browser/app.js:32812:23)
    at defaultHandlerWrapper (file:///Users/jviotti/Projects/resin/resin-etcher/build/browser/app.js:12540:11)
    at hero-progress-button.eventHandler (file:///Users/jviotti/Projects/resin/resin-etcher/build/browser/app.js:12528:9)

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.