-
-
- Plug in your devices to a USB port. We will install firmware to it. -
- Hit ‘Connect’ and select the correct COM port. -
- Get firmware installed and connected in less than 3 minutes! -
Install
+-
+
- + Make sure that the device is connected to this computer (the one + that runs the browser that shows this website) + +
- + Most devices have a tiny light when it is powered on. If yours has + one, make sure it is on. + +
- + Make sure that the USB cable you use can be used for data and is + not a power-only cable. + + ${"Linux"===e?l` +
-
+ If you are using a Linux flavor, make sure that your user is
+ part of the
dialout
group so it has permission + to access the device. +sudo usermod -a -G dialout YourUserName
+ You may need to log out & back in or reboot to activate the + new group access. +
+ `:""}
+ -
+ Make sure you have the right drivers installed. Below are the
+ drivers for common chips used in ESP devices:
+
-
+
- + CP2102 drivers: + Windows & Mac + +
-
+ CH342, CH343, CH9102 drivers:
+ Windows,
+ Mac
+
+ (download via blue button with ${a} icon) +
+ -
+ CH340, CH341 drivers:
+ Windows,
+ Mac
+
+ (download via blue button with ${a} icon) +
+
+
{let o,s,a=0;e.level>0?(2===e.strm.data_type&&(e.strm.data_type=(e=>{let t,i=4093624447;for(t=0;t<=31;t++,i>>>=1)if(1&i&&0!==e.dyn_ltree[2*t])return 0;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return 1;for(t=32;t{let t;for(Mi(e,e.dyn_ltree,e.l_desc.max_code),Mi(e,e.dyn_dtree,e.d_desc.max_code),Fi(e,e.bl_desc),t=18;t>=3&&0===e.bl_tree[2*vi[t]+1];t--);return e.opt_len+=3*(t+1)+5+5+4,t})(e),o=e.opt_len+3+7>>>3,s=e.static_len+3+7>>>3,s<=o&&(o=s)):o=s=i+5,i+4<=o&&-1!==t?qi(e,t,i,r):4===e.strategy||s===o?(Ci(e,2+(r?1:0),3),Pi(e,gi,yi)):(Ci(e,4+(r?1:0),3),((e,t,i,r)=>{let o;for(Ci(e,t-257,5),Ci(e,i-1,5),Ci(e,r-4,4),o=0;o(e.pending_buf[e.sym_buf+e.sym_next++]=t,e.pending_buf[e.sym_buf+e.sym_next++]=t>>8,e.pending_buf[e.sym_buf+e.sym_next++]=i,0===t?e.dyn_ltree[2*i]++:(e.matches++,t--,e.dyn_ltree[2*(_i[i]+di+1)]++,e.dyn_dtree[2*Ti(t)]++),e.sym_next===e.sym_end),Gi=e=>{Ci(e,2,3),Bi(e,256,gi),(e=>{16===e.bi_valid?(Ii(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):e.bi_valid>=8&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)})(e)},ji={_tr_init:Wi,_tr_stored_block:qi,_tr_flush_block:Zi,_tr_tally:Vi,_tr_align:Gi};var Ki=(e,t,i,r)=>{let o=65535&e|0,s=e>>>16&65535|0,a=0;for(;0!==i;){a=i>2e3?2e3:i,i-=a;do{o=o+t[r++]|0,s=s+o|0}while(--a);o%=65521,s%=65521}return o|s<<16|0};const Yi=new Uint32Array((()=>{let e,t=[];for(var i=0;i<256;i++){e=i;for(var r=0;r<8;r++)e=1&e?3988292384^e>>>1:e>>>1;t[i]=e}return t})());var Xi=(e,t,i,r)=>{const o=Yi,s=r+i;e^=-1;for(let i=r;i>>8^o[255&(e^t[i])];return-1^e},Ji={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"},Qi={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8};const{_tr_init:er,_tr_stored_block:tr,_tr_flush_block:ir,_tr_tally:rr,_tr_align:or}=ji,{Z_NO_FLUSH:sr,Z_PARTIAL_FLUSH:ar,Z_FULL_FLUSH:nr,Z_FINISH:lr,Z_BLOCK:dr,Z_OK:cr,Z_STREAM_END:hr,Z_STREAM_ERROR:pr,Z_DATA_ERROR:fr,Z_BUF_ERROR:ur,Z_DEFAULT_COMPRESSION:mr,Z_FILTERED:vr,Z_HUFFMAN_ONLY:gr,Z_RLE:yr,Z_FIXED:br,Z_DEFAULT_STRATEGY:_r,Z_UNKNOWN:xr,Z_DEFLATED:wr}=Qi,Er=258,kr=262,Ar=42,Sr=113,Rr=666,Tr=(e,t)=>(e.msg=Ji[t],t),Ir=e=>2*e-(e>4?9:0),Cr=e=>{let t=e.length;for(;--t>=0;)e[t]=0},Br=e=>{let t,i,r,o=e.w_size;t=e.hash_size,r=t;do{i=e.head[--r],e.head[r]=i>=o?i-o:0}while(--t);t=o,r=t;do{i=e.prev[--r],e.prev[r]=i>=o?i-o:0}while(--t)};let $r=(e,t,i)=>(t<{const t=e.state;let i=t.pending;i>e.avail_out&&(i=e.avail_out),0!==i&&(e.output.set(t.pending_buf.subarray(t.pending_out,t.pending_out+i),e.next_out),e.next_out+=i,t.pending_out+=i,e.total_out+=i,e.avail_out-=i,t.pending-=i,0===t.pending&&(t.pending_out=0))},Or=(e,t)=>{ir(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,Lr(e.strm)},zr=(e,t)=>{e.pending_buf[e.pending++]=t},Ur=(e,t)=>{e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t},Dr=(e,t,i,r)=>{let o=e.avail_in;return o>r&&(o=r),0===o?0:(e.avail_in-=o,t.set(e.input.subarray(e.next_in,e.next_in+o),i),1===e.state.wrap?e.adler=Ki(e.adler,t,o,i):2===e.state.wrap&&(e.adler=Xi(e.adler,t,o,i)),e.next_in+=o,e.total_in+=o,o)},Pr=(e,t)=>{let i,r,o=e.max_chain_length,s=e.strstart,a=e.prev_length,n=e.nice_match;const l=e.strstart>e.w_size-kr?e.strstart-(e.w_size-kr):0,d=e.window,c=e.w_mask,h=e.prev,p=e.strstart+Er;let f=d[s+a-1],u=d[s+a];e.prev_length>=e.good_match&&(o>>=2),n>e.lookahead&&(n=e.lookahead);do{if(i=t,d[i+a]===u&&d[i+a-1]===f&&d[i]===d[s]&&d[++i]===d[s+1]){s+=2,i++;do{}while(d[++s]===d[++i]&&d[++s]===d[++i]&&d[++s]===d[++i]&&d[++s]===d[++i]&&d[++s]===d[++i]&&d[++s]===d[++i]&&d[++s]===d[++i]&&d[++s]===d[++i]&&s
a){if(e.match_start=t,a=r,r>=n)break;f=d[s+a-1],u=d[s+a]}}}while((t=h[t&c])>l&&0!=--o);return a<=e.lookahead?a:e.lookahead},Fr=e=>{const t=e.w_size;let i,r,o;do{if(r=e.window_size-e.lookahead-e.strstart,e.strstart>=t+(t-kr)&&(e.window.set(e.window.subarray(t,t+t-r),0),e.match_start-=t,e.strstart-=t,e.block_start-=t,e.insert>e.strstart&&(e.insert=e.strstart),Br(e),r+=t),0===e.strm.avail_in)break;if(i=Dr(e.strm,e.window,e.strstart+e.lookahead,r),e.lookahead+=i,e.lookahead+e.insert>=3)for(o=e.strstart-e.insert,e.ins_h=e.window[o],e.ins_h=$r(e,e.ins_h,e.window[o+1]);e.insert&&(e.ins_h=$r(e,e.ins_h,e.window[o+3-1]),e.prev[o&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=o,o++,e.insert--,!(e.lookahead+e.insert<3)););}while(e.lookahead ${i}>8,e.pending_buf[e.pending-2]=~i,e.pending_buf[e.pending-1]=~i>>8,Lr(e.strm),r&&(r>i&&(r=i),e.strm.output.set(e.window.subarray(e.block_start,e.block_start+r),e.strm.next_out),e.strm.next_out+=r,e.strm.avail_out-=r,e.strm.total_out+=r,e.block_start+=r,i-=r),i&&(Dr(e.strm,e.strm.output,e.strm.next_out,i),e.strm.next_out+=i,e.strm.avail_out-=i,e.strm.total_out+=i)}while(0===a);return n-=e.strm.avail_in,n&&(n>=e.w_size?(e.matches=2,e.window.set(e.strm.input.subarray(e.strm.next_in-e.w_size,e.strm.next_in),0),e.strstart=e.w_size,e.insert=e.strstart):(e.window_size-e.strstart<=n&&(e.strstart-=e.w_size,e.window.set(e.window.subarray(e.w_size,e.w_size+e.strstart),0),e.matches<2&&e.matches++,e.insert>e.strstart&&(e.insert=e.strstart)),e.window.set(e.strm.input.subarray(e.strm.next_in-n,e.strm.next_in),e.strstart),e.strstart+=n,e.insert+=n>e.w_size-e.insert?e.w_size-e.insert:n),e.block_start=e.strstart),e.high_watere.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=3?(i=rr(e,1,e.match_length-3),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(i=rr(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),i&&(Or(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,t===lr?(Or(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(Or(e,!1),0===e.strm.avail_out)?1:2})(i,t):Wr[i.level].func(i,t);if(3!==r&&4!==r||(i.status=Rr),1===r||3===r)return 0===e.avail_out&&(i.last_flush=-1),cr;if(2===r&&(t===ar?or(i):t!==dr&&(tr(i,0,0,!1),t===nr&&(Cr(i.head),0===i.lookahead&&(i.strstart=0,i.block_start=0,i.insert=0))),Lr(e),0===e.avail_out))return i.last_flush=-1,cr}return t!==lr?cr:i.wrap<=0?hr:(2===i.wrap?(zr(i,255&e.adler),zr(i,e.adler>>8&255),zr(i,e.adler>>16&255),zr(i,e.adler>>24&255),zr(i,255&e.total_in),zr(i,e.total_in>>8&255),zr(i,e.total_in>>16&255),zr(i,e.total_in>>24&255)):(Ur(i,e.adler>>>16),Ur(i,65535&e.adler)),Lr(e),i.wrap>0&&(i.wrap=-i.wrap),0!==i.pending?cr:hr)},Xr=(e,t)=>{let i=t.length;if(Vr(e))return pr;const r=e.state,o=r.wrap;if(2===o||1===o&&r.status!==Ar||r.lookahead)return pr;if(1===o&&(e.adler=Ki(e.adler,t,i,0)),r.wrap=0,i>=r.w_size){0===o&&(Cr(r.head),r.strstart=0,r.block_start=0,r.insert=0);let e=new Uint8Array(r.w_size);e.set(t.subarray(i-r.w_size,i),0),t=e,i=r.w_size}const s=e.avail_in,a=e.next_in,n=e.input;for(e.avail_in=i,e.next_in=0,e.input=t,Fr(r);r.lookahead>=3;){let e=r.strstart,t=r.lookahead-2;do{r.ins_h=$r(r,r.ins_h,r.window[e+3-1]),r.prev[e&r.w_mask]=r.head[r.ins_h],r.head[r.ins_h]=e,e++}while(--t);r.strstart=e,r.lookahead=2,Fr(r)}return r.strstart+=r.lookahead,r.block_start=r.strstart,r.insert=r.lookahead,r.lookahead=0,r.match_length=r.prev_length=2,r.match_available=0,e.next_in=a,e.input=n,e.avail_in=s,r.wrap=o,cr},Jr={deflateInit:(e,t)=>Kr(e,t,wr,15,8,_r),deflateInit2:Kr,deflateReset:jr,deflateResetKeep:Gr,deflateSetHeader:(e,t)=>Vr(e)||2!==e.state.wrap?pr:(e.state.gzhead=t,cr),deflate:Yr,deflateEnd:e=>{if(Vr(e))return pr;const t=e.state.status;return e.state=null,t===Sr?Tr(e,fr):cr},deflateSetDictionary:Xr,deflateInfo:"pako deflate (from Nodeca project)"};const Qr=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);var eo={assign:function(e){const t=Array.prototype.slice.call(arguments,1);for(;t.length;){const i=t.shift();if(i){if("object"!=typeof i)throw new TypeError(i+"must be non-object");for(const t in i)Qr(i,t)&&(e[t]=i[t])}}return e},flattenChunks:e=>{let t=0;for(let i=0,r=e.length;ie.length)throw new RangeError("Index out of range")}function $(e,t,i,r,o){M(t,r,o,e,i,7);let s=Number(t&BigInt(4294967295));e[i++]=s,s>>=8,e[i++]=s,s>>=8,e[i++]=s,s>>=8,e[i++]=s;let a=Number(t>>BigInt(32)&BigInt(4294967295));return e[i++]=a,a>>=8,e[i++]=a,a>>=8,e[i++]=a,a>>=8,e[i++]=a,i}function L(e,t,i,r,o){M(t,r,o,e,i,7);let s=Number(t&BigInt(4294967295));e[i+7]=s,s>>=8,e[i+6]=s,s>>=8,e[i+5]=s,s>>=8,e[i+4]=s;let a=Number(t>>BigInt(32)&BigInt(4294967295));return e[i+3]=a,a>>=8,e[i+2]=a,a>>=8,e[i+1]=a,a>>=8,e[i]=a,i+8}function O(e,t,i,r,o,s){if(i+r>e.length)throw new RangeError("Index out of range");if(i<0)throw new RangeError("Index out of range")}function z(e,t,r,o,s){return t=+t,r>>>=0,s||O(e,0,r,4),i.write(e,t,r,o,23,4),r+4}function U(e,t,r,o,s){return t=+t,r>>>=0,s||O(e,0,r,8),i.write(e,t,r,o,52,8),r+8}a.prototype.slice=function(e,t){const i=this.length;(e=~~e)<0?(e+=i)<0&&(e=0):e>i&&(e=i),(t=void 0===t?i:~~t)<0?(t+=i)<0&&(t=0):t>i&&(t=i),tt)throw new ni(`File ${i+1} doesn't fit in the available flash`)}let t,i;!0===this.IS_STUB&&!0===e.eraseAll&&await this.eraseFlash();for(let r=0;r
`:""}
+
+ This will take
+ ${"ESP8266"===this._installState.chipFamily?"a minute":"2 minutes"}.
+ Keep this page visible to prevent slow down
+ `,i)}else if("finished"===this._installState.state){e=void 0;const i=null!==this._client;t=o`
+
`:""}
+ Do you want to ${r}
+ ${this._manifest.name} ${this._manifest.version}?
+ ${this._installErase?o`
All data on the device will be erased.`:""}
+