etcher
etcher copied to clipboard
bz2 files can no longer be flashed
- Etcher version: 1.18.4
- Operating system and architecture: M1 Mac Monterey 12 to a Sandisk 32Gb USB device
- Image flashed: steamdeck recovery image
- What do you think should have happened: should have flashed the steamdeck image to the device
- What happened: Never gets past 'Flashing 0%', rolled back to 1.14.3 and it works fine
- Do you see any meaningful error information in the DevTools? Just stays on 0% with an unfathomably long ETA, no actual errors
I'm on Monterey on Mac M1 and I can flash just fine. Can you share a link to the image you're flashing so that I can give it a go?
https://store.steampowered.com/steamos/download/?ver=steamdeck&snr=
Here you go. I've actually tried this on two M1 macs with Monterey, sorry employer, and the same result on both
Seems it has to do with compression -- if you extract the image and try to flash that it pretty fast. Trying to flash the compressed image also works but at an extremely slow rate that is unusable. That said, I'm on a top-of-the-line M1 Max and just uncompressing the image took a couple of minutes so it seems bzip compression is inherently slow to decompress (still a lot faster than Etcher though).
Try flashing the extracted image to get unblocked and I'll see if there's anything we can do to speed up flashing bzips when I get a chance.
Thanks. Although that doesn't explain why the decompression issue didn't happen on 1.14.3, in fact there was no indication that whilst it was hanging it was even attempting to decompress on 1.18.4.
Okay, that’s great to know — we messed a lot with Etcher’s internals since 1.14 in order to allow us to update to newer versions of dependencies so it’s likely we introduced a regression. I’ll try to take a look at this next week.
No worries, thank you, happy to retest any changes.
https://github.com/balena-io/etcher/issues/4022
Reproduced same problem : 1.18.4 was unable to flash from url (home assistant rasp version : ) on M1 Macbookpro OSX ventura 13.2.1, while 1.14.3 does it fine.
In case... dev console logs for 1.18.4 failure follows :
Failed to load resource: net::ERR_FILE_NOT_FOUND
gui.js:354 _____ _ _
| ___| | | |
| |__ | |_ ___| |__ ___ _ __
| __|| __/ __| '_ \ / _ \ '__|
| |___| || (__| | | | __/ |
\____/ \__\___|_| |_|\___|_|
Interested in joining the Etcher team?
Drop us a line at [email protected]
Version = 1.18.4, Type = dmg
4gui.js:1 Uncaught Error: aborted
at connResetException (node:internal/errors:691:14)
at TLSSocket.socketCloseListener (node:_http_client:402:19)
at TLSSocket.emit (node:events:538:35)
at node:net:687:12
at TCP.done (node:_tls_wrap:580:7)
gui.js:37 Elevating command: /Users/jerome/Desktop/balenaEtcher.app/Contents/Frameworks/balenaEtcher Helper (Renderer).app/Contents/MacOS/balenaEtcher Helper (Renderer) /Users/jerome/Desktop/balenaEtcher.app/Contents/Resources/app/generated/child-writer.js
gui.js:37 Error: Error invoking remote method 'disable-screensaver': No handler registered for 'disable-screensaver'
at o.invoke (node:electron/js2c/renderer_init:57:526)
(anonymous) @ gui.js:37
gui.js:35 0 devices, 0% at 0.00 MB/s (total 0.00 MB/s) with 0 failed devices
gui.js:37 Successfully connected to IPC server: etcher-server-3664, socket root /var/folders/49/_lp9qx4j1nx06f46gj3_t9780000gn/T/
gui.js:37 Image: https://github.com/home-assistant/operating-system/releases/download/9.5/haos_rpi4-64-9.5.img.xz
gui.js:37 Devices: /dev/disk5
gui.js:37 Auto blockmapping: true
gui.js:37 Decompress first: true
gui.js:37 Terminating IPC server
gui.js:37 Flash results Object
gui.js:37 Error: /Users/jerome/Desktop/balenaEtcher.app/Contents/Resources/app/generated/child-writer.js:1
(()=>{var __webpack_modules__=[,(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";Object.defineProperty(exports,"__esModule",{value:true});const tslib_1=__webpack_require__(2);tslib_1.__exportStar(__webpack_require__(3),exports);tslib_1.__exportStar(__webpack_require__(114),exports);tslib_1.__exportStar(__webpack_require__(122),exports);tslib_1.__exportStar(__webpack_require__(118),exports);tslib_1.__exportStar(__webpack_require__(149),exports);tslib_1.__exportStar(__webpack_require__(179),exports);tslib_1.__exportStar(__webpack_require__(180),exports);tslib_1.__exportStar(__webpack_require__(68),exports);tslib_1.__exportStar(__webpack_require__(181),exports);tslib_1.__exportStar(__webpack_require__(234),exports);tslib_1.__exportStar(__webpack_require__(235),exports);tslib_1.__exportStar(__webpack_require__(28),exports);tslib_1.__exportStar(__webpack_require__(236),exports);tslib_1.__exportStar(__webpack_require__(293),exports);tslib_1.__exportStar(__webpack_require__(69),exports);tslib_1.__exportStar(__webpack_require__(121),exports);tslib_1.__exportStar(__webpack_require__(322),exports);tslib_1.__exportStar(__webpack_require__(323),exports);tslib_1.__exportStar(__webpack_require__(324),exports);tslib_1.__exportStar(__webpack_require__(325),exports);tslib_1.__exportStar(__webpack_require__(259),exports)},(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";__webpack_require__.r(__webpack_exports__);__webpack_require__.d(__webpack_exports__,{__assign:()=>__assign,__asyncDelegator:()=>__asyncDelegator,__asyncGenerator:()=>__asyncGenerator,__asyncValues:()=>__asyncValues,__await:()=>__await,__awaiter:()=>__awaiter,__classPrivateFieldGet:()=>__classPrivateFieldGet,__classPrivateFieldIn:()=>__classPrivateFieldIn,__classPrivateFieldSet:()=>__classPrivateFieldSet,__createBinding:()=>__createBinding,__decorate:()=>__decorate,__exportStar:()=>__exportStar,__extends:()=>__extends,__generator:()=>__generator,__importDefault:()=>__importDefault,__importStar:()=>__importStar,__makeTemplateObject:()=>__makeTemplateObject,__metadata:()=>__metadata,__param:()=>__param,__read:()=>__read,__rest:()=>__rest,__spread:()=>__spread,__spreadArray:()=>__spreadArray,__spreadArrays:()=>__spreadArrays,__values:()=>__values});var extendStatics=function(d,b){extendStatics=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(d,b){d.__proto__=b}||function(d,b){for(var p in b)if(Object.prototype.hasOwnProperty.call(b,p))d[p]=b[p]};return extendStatics(d,b)};function __extends(d,b){if(typeof b!=="function"&&b!==null)throw new TypeError("Class extends value "+String(b)+" is not a constructor or null");extendStatics(d,b);function __(){this.constructor=d}d.prototype=b===null?Object.create(b):(__.prototype=b.prototype,new __)}var __assign=function(){__assign=Object.assign||function __assign(t){for(var s,i=1,n=arguments.length;i<n;i++){s=arguments[i];for(var p in s)if(Object.prototype.hasOwnProperty.call(s,p))t[p]=s[p]}return t};return __assign.apply(this,arguments)};function __rest(s,e){var t={};for(var p in s)if(Object.prototype.hasOwnProperty.call(s,p)&&e.indexOf(p)<0)t[p]=s[p];if(s!=null&&typeof Object.getOwnPropertySymbols==="function")for(var i=0,p=Object.getOwnPropertySymbols(s);i<p.length;i++){if(e.indexOf(p[i])<0&&Object.prototype.propertyIsEnumerable.call(s,p[i]))t[p[i]]=s[p[i]]}return t}function __decorate(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect==="object"&&typeof Reflect.decorate==="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)if(d=decorators[i])r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r;return c>3&&r&&Object.defineProperty(target,key,r),r}function __param(paramIndex,decorator){return function(target,key){decorator(target,key,paramIndex)}}function __metadata(metadataKey,metadataValue){if(typeof Reflect==="object"&&typeof Reflect.metadata==="function")return Reflect.metadata(metadataKey,metadataValue)}function __awaiter(thisArg,_arguments,P,generator){function adopt(value){return value instanceof P?value:new P((function(resolve){resolve(value)}))}return new(P||(P=Promise))((function(resolve,reject){function fulfilled(value){try{step(generator.next(value))}catch(e){reject(e)}}function rejected(value){try{step(generator["throw"](value))}catch(e){reject(e)}}function step(result){result.done?resolve(result.value):adopt(result.value).then(fulfilled,rejected)}step((generator=generator.apply(thisArg,_arguments||[])).next())}))}function __generator(thisArg,body){var _={label:0,sent:function(){if(t[0]&1)throw t[1];return t[1]},trys:[],ops:[]},f,y,t,g;return g={next:verb(0),throw:verb(1),return:verb(2)},typeof Symbol==="function"&&(g[Symbol.iterator]=function(){return this}),g;function verb(n){return function(v){return step([n,v])}}function step(op){if(f)throw new TypeError("Generator is already executing.");while(g&&(g=0,op[0]&&(_=0)),_)try{if(f=1,y&&(t=op[0]&2?y["return"]:op[0]?y["throw"]||((t=y["return"])&&t.call(y),0):y.next)&&!(t=t.call(y,op[1])).done)return t;if(y=0,t)op=[op[0]&2,t.value];switch(op[0]){case 0:case 1:t=op;break;case 4:_.label++;return{value:op[1],done:false};case 5:_.label++;y=op[1];op=[0];continue;case 7:op=_.ops.pop();_.trys.pop();continue;default:if(!(t=_.trys,t=t.length>0&&t[t.length-1])&&(op[0]===6||op[0]===2)){_=0;continue}if(op[0]===3&&(!t||op[1]>t[0]&&op[1]<t[3])){_.label=op[1];break}if(op[0]===6&&_.label<t[1]){_.label=t[1];t=op;break}if(t&&_.label<t[2]){_.label=t[2];_.ops.push(op);break}if(t[2])_.ops.pop();_.trys.pop();continue}op=body.call(thisArg,_)}catch(e){op=[6,e];y=0}finally{f=t=0}if(op[0]&5)throw op[1];return{value:op[0]?op[1]:void 0,done:true}}}var __createBinding=Object.create?function(o,m,k,k2){if(k2===undefined)k2=k;var desc=Object.getOwnPropertyDescriptor(m,k);if(!desc||("get"in desc?!m.__esModule:desc.writable||desc.configurable)){desc={enumerable:true,get:function(){return m[k]}}}Object.defineProperty(o,k2,desc)}:function(o,m,k,k2){if(k2===undefined)k2=k;o[k2]=m[k]};function __exportStar(m,o){for(var p in m)if(p!=="default"&&!Object.prototype.hasOwnProperty.call(o,p))__createBinding(o,m,p)}function __values(o){var s=typeof Symbol==="function"&&Symbol.iterator,m=s&&o[s],i=0;if(m)return m.call(o);if(o&&typeof o.length==="number")return{next:function(){if(o&&i>=o.length)o=void 0;return{value:o&&o[i++],done:!o}}};throw new TypeError(s?"Object is not iterable.":"Symbol.iterator is not defined.")}function __read(o,n){var m=typeof Symbol==="function"&&o[Symbol.iterator];if(!m)return o;var i=m.call(o),r,ar=[],e;try{while((n===void 0||n-- >0)&&!(r=i.next()).done)ar.push(r.value)}catch(error){e={error}}finally{try{if(r&&!r.done&&(m=i["return"]))m.call(i)}finally{if(e)throw e.error}}return ar}function __spread(){for(var ar=[],i=0;i<arguments.length;i++)ar=ar.concat(__read(arguments[i]));return ar}function __spreadArrays(){for(var s=0,i=0,il=arguments.length;i<il;i++)s+=arguments[i].length;for(var r=Array(s),k=0,i=0;i<il;i++)for(var a=arguments[i],j=0,jl=a.length;j<jl;j++,k++)r[k]=a[j];return r}function __spreadArray(to,from,pack){if(pack||arguments.length===2)for(var i=0,l=from.length,ar;i<l;i++){if(ar||!(i in from)){if(!ar)ar=Array.prototype.slice.call(from,0,i);ar[i]=from[i]}}return to.concat(ar||Array.prototype.slice.call(from))}function __await(v){return this instanceof __await?(this.v=v,this):new __await(v)}function __asyncGenerator(thisArg,_arguments,generator){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var g=generator.apply(thisArg,_arguments||[]),i,q=[];return i={},verb("next"),verb("throw"),verb("return"),i[Symbol.asyncIterator]=function(){return this},i;function verb(n){if(g[n])i[n]=function(v){return new Promise((function(a,b){q.push([n,v,a,b])>1||resume(n,v)}))}}function resume(n,v){try{step(g[n](v))}catch(e){settle(q[0][3],e)}}function step(r){r.value instanceof __await?Promise.resolve(r.value.v).then(fulfill,reject):settle(q[0][2],r)}function fulfill(value){resume("next
at Object.createError (gui.js:37:219904)
at elevateScriptCatalina (gui.js:341:4060)
at async withTmpFile (gui.js:1:718820)
at async elevateCommand (gui.js:341:4411)
at async Server.<anonymous> (gui.js:341:8515)
(anonymous) @ gui.js:37
gui.js:37 Error: Error invoking remote method 'enable-screensaver': No handler registered for 'enable-screensaver'
at o.invoke (node:electron/js2c/renderer_init:57:526)
(anonymous) @ gui.js:37
Same issue here - trying to flash the Steam Deck OS with balenaEtcher 1.18.4 on macOS Ventura 13.3.
Granted balenaEtcher Full Disk Access and Files & Folders permissions and opened it with:
sudo /Applications/balenaEtcher.app/Contents/MacOS/balenaetcher
Stuck on "Flashing 0%".
Same issue here - trying to flash the Steam Deck OS with balenaEtcher 1.18.4 on macOS Ventura 13.3.
Granted balenaEtcher Full Disk Access and Files & Folders permissions and opened it with:
sudo /Applications/balenaEtcher.app/Contents/MacOS/balenaetcher
Stuck on "Flashing 0%".
Decompress the image before passing it to balenaetcher and you should be good. BalenaEtcher either can't handle the compressed format or is taking it's time decompressing it without any visual indication of it doing so ¯_(ツ)_/¯
I had the same issue, tried 1.17.0 and went through, hope this could help you.
I fixed the issue with Balena Etcher not flashing steamdeck-recovery-4.img.bz2 by doing the following steps.
After reading the following reply, I did the following to decompress the bzip2 file.
if you extract the image and try to flash that it pretty fast
➜ Downloads bzip2 -d steamdeck-recovery-4.img.bz2
➜ Downloads ls -la | grep "steamdeck"
.rw-rw-r-- roberto roberto 7.2 GB Thu Sep 14 12:26:51 2023 steamdeck-recovery-4.img
It took a while but it eventually decompressed the file leaving only the image file. I'm not sure if Balena Etcher should be decompressing it automatically (and if you ask me I don't think it should be doing that as the software should only be flashing the image instead of also decompressing) but doing this extra step helps a lot.
It was found that when the decompressed image is larger than 5g, etcher will use the method of decompressing and burning at the same time. At this time, the burning will fail (for example, steamdeck.img). However, if the image is smaller than 5g, it will be decompressed first and then burned, and it will not fail.
Are there any relevant updates?
- Etcher version: 1.18.4
- Operating system and architecture: M1 Mac Monterey 12 to a Sandisk 32Gb USB device
- Image flashed: steamdeck recovery image
- What do you think should have happened: should have flashed the steamdeck image to the device
- What happened: Never gets past 'Flashing 0%', rolled back to 1.14.3 and it works fine
- Do you see any meaningful error information in the DevTools? Just stays on 0% with an unfathomably long ETA, no actual errors
I created a SteamOS repair image for the SteamDeck OLED and encountered the same issue. I also reverted back to version 1.14.3. It works!
MacBook Pro M1 Pro MacOS Sonoma 14.3.1 128Gb USB device
Any updates on this?? Also had to downgrade to 1.14.3 but it only works in every full moon...
I don't understand why such serious bug in a generally great product is not prioritized higher? There are numerous duplicates of this issue on the tracker but it seems like they don't get the attention they should. :(
Meanwhile, most of my Windows user colleagues have settled back on Rufus, which might not look that pretty but at least it works.
(Running etcher on Linux btw.)