ESP8266 Development in Windows AT LAST

ESP8266 on WindowsHere it is… on the surface of it a MASSIVE Christmas gift to those of us who simply have to little time on our hands to get involved with Linux.

I got so frustrated waiting for up to date BIN files and the continuation of Chinglish error messages (I should not complain because many Chinese speak far better English than I speak Chinese) – I decided this morning to down tools and see if I could get the compiler working in Windows – but I wasn’t expecting THIS.

I was stumbling through various blogs and discovered THIS. – the link gives you all the files you should need to get working environment in 64 bit Windows – and this video  shows  a demo in the video of the whole ESP8266 compilation and rom-blowing – WITHOUT reams of irrelevant warning messages!!

ESP-01AT LAST, ESP8266 compiling and blowing in human-readable form. I got VERY exited about this as there are several developments out there which are ALMOST what I’d like but not quite – a stress free way to mod the source codes would be lovely. For example one fellow has developed the AT command set for ESP8266 using the latest SDK and added NTP support – another has added a well needed internal buffering scheme to the serial – what would be great would be BOTH of these in one package – the only way to do that is to get the sources, compare, mod and blow your own chips – and now my Windows friends – you CAN.

Check out the link and follow the instructions EXACTLY – don’t go off on a tangent as there’s a similar page with failed links and lots of Russian – you’ll find the JAVA file on the linked website is later than the one he specified – won’t worry about it – still works. There is an issue also that in his diagram he shows the ESP-01 with pins GPIO0 and GPIO5 connected to the FTDI (USB-RS232 convertor) – well, you don’t HAVE GPIIO-5 available on the ESP-01 – I’d tell him that but I don’t speak Russian – I did leave a note on his YouTube site. . Matters not – you merely need to ensure as before that GPIO-0 is grounded before you start blowing chips – and don’t forget to cycle the power to the board before and after.

Follow his instructions TO THE LETTER. I installed each of the packages (with the updated Java package – when it came to his EXTENSION package which consisted of a BATCH file, I noted (typical command line stuff – whizzes by you too fast to see) some errors to do with packages already installed. Mad no difference, still worked.

Eclipse on Windows compiling ESP8266I followed the instructions for the Eclipse Luna program including point 8 in his documentation though that last paragraph I simple could not understand. But then I realised this was explained in the short video.

So – 5 files in all totalling maybe 400Mb – and worth every byte!

By the time I was finished (NO extra work other than following the instructions and no “assumptions” other than having Windows 8 64 bit)… and I ended up with this.. As you can see, pretty damned impressive,  a working rig with various projects already included on the left, all set up INCLUDING the latest AT v0.2.0 on SDKv0.9.4 – which is the one I’m currently interested in. No Lua but I’m sure someone can help there.

Compilation WORKED (wheeeee)…

tmp26DDBut then when it came to the last bit – blowing the file in to the ESP-01 – FAILURE.

I found at least 2 places in the MAKEFILES referring to COM2 – which I changed to COM5 (all done within the environment) – that just seems the WRONG way to do this – surely you would set the COM port outside of the MAKE file and pass it as a parameter – if you figure this out – please WRITE IN… 

I changed the COM port manually and eagerly double-pressed the button to blow the chip. My little board flashed for a second and… failure. I’d forgotten to short GPIO-0 to ground. Power off then back on with the link, plug into the PC via my FTDI –and…..SUCCESS. 

Right about now I can make a minor mod then compile and blow all within 26 seconds – which is amazing.

ESP-12So – there you have it – that and the revelation that my FTDI can indeed generate it’s own 3v3 and hence I can run the Arduino and the ESP8266 on 3v3 instead of messing around with level convertors…. it’s been a GOOD DAY so far. No longer the poor cousins of the Linux crowd..

I hope you get as much fun out of this as I intend to. Next stop I need to ensure you can just pull in a GITHUB folder structure as I’m sure these won’t be ENTIRELY up to date… he doesn’t seem to have the LUA interpreter in here – as that has only JUST gone open source – again if you manage to pull that in and compile and blow, please come back in here and give us a step by step along with any other news of updates to install – I can see this environment getting a lot of use.

I installed this on 64 bit Windows 7 without ANY issues, next stop I hope to repeat this with Windows 8. If only Dropbox was faster…

07:04PM – Tested in Windows 8.1 64-bit – no problems – same procedure, same results – success.

08:02PM – Tried the MQTT demo – loaded it in from the site ZIP, imported all fine, compiled all fine but did NOT generate a firmware directory and so blowing the files could not proceed. Maybe this is a one off problem?

If you’re on Facebook don’t forget to LIKE my Facebook page – where I can concentrate purely on Windows users..


46 thoughts on “ESP8266 Development in Windows AT LAST

  1. Hi Peter,

    I discovered this yesterday, it’s a really nice environment for working in.

    I did download the MQTT client example from github, downloaded the zip, extracted into example directory, imported into eclipse and it compiled without any issues.

    The nicety of using MQTT is you can send and receive data from your sensor/relay/etc providing you’ve got an MQTT server somewhere.

    I know you’ve used MQTT in past, so may be worthwhile taking a look at it 🙂


  2. Hey, thanks for that, Glen. I note the guy warns us it’s for development only and not to be used for anything serious yet – so I’ll park that one for now but you’ve given us the link (that’s why I started my own blog in the first place – as a resource for links and info) – we can all go back and check this later. I’d love to hear what you’ve done with it – you compiled and it worked ok – that’s magic. What did you do with it? I think the thing that got me interested in MQTT was the security – has he implemented passwords etc… I’m using TCP/IP listening mode which, while it works well has zero security. Just need someone to get the Lua project in there and compiling and we just about have the lot – unless there are more projects out there that I’m unaware of.

  3. Glen…

    Interesting – just for completeness I tried adding the project to the environment – it came up as “MQTT-pub and compiled fine – but there are more options here including “flash_ota_boot”, “upload_cloud” and “upload_local”… I found a bit confusing – flast_ota_boot would not work – I discovered it used COM2 and I changed that to COM5 and got this..

    File “c:\Espressif\utils\”, line 465, in
    image = file(filename, ‘rb’).read()
    IOError: [Errno 2] No such file or directory: ‘firmware/user1_0x01000.bin’
    C:/Espressif/examples/esp_mqtt/Makefile:239: recipe for target ‘flash_ota_boot’ failed
    mingw32-make.exe: *** [flash_ota_boot] Error 1

    19:54:43 Build Finished (took 1s.410ms)

    any thoughts?

    It would SEEM that no FIRMWARE directory was created…

  4. Hi Peter,

    I double click on the ALL green circular button in the right pain. The project is built and the firmware files appear in the firmware directory.

    • Don’t thank me – thank the Russian? fellow who did what seems to have been a lot of work to make this simple for us – I’m putting it on my laptop now so I can learn while I’m out and about. If you want to help, just make sure if you discover any goodies you let us know in here. I’ve already compiled the AT code and it worked a treat – I even made a change and that worked. When I get a minute I’m going to change the responses to be more “unique” – fantastic… but I imported the MQTT demo from elsewhere and that showed that took a LITTLE more doing to get a compiled output – of course I should have looked around to see if there were instructions before going in at the deep end. Right now I’ve a working MQTT program with no idea what to do with it. I can tell from the source code that it’s in station mode looking for my router but can I HELL find the bit where I’m supposed to enter the router name and password.. 🙂 Oh well, hopefullly someone will have cracked it. Happy programming.

  5. Well, this has me.. It generates this when you click on “build_ota”
    FW firmware/user2_0x41000.bin
    FW firmware/user2_0x51000.bin
    Usage: 1.bin 2.bin
    CREATE firmware/user2_0x41000.bin firmware/user2_0x51000.bin firmware/user2.bin

    22:24:14 Build Finished (took 4s.500ms)

    quite clearly it looks like it’s created files in the firmware directory – but the list of the left shows no such directory – other projects the firmware directory magically appears when you compile.
    Your “ALL” button similarly..

    22:26:09 **** Build of configuration Default for project mqtt_pub ****
    mingw32-make.exe -f C:/Espressif/examples/esp_mqtt/Makefile all
    AR build/app_app.a
    LD build/app.out
    FW firmware/0x00000.bin
    FW firmware/0x40000.bin
    Usage: 1.bin 2.bin

    22:26:10 Build Finished (took 1s.113ms)

    Looks to ME like it’s made a firmware file – but it’s not there.

    But here’s the thing. I just looked in the actual directories OUTSIDE of the environment – ie using Windows file explorer – not only is there a firmware directory – but it has files 0x000.bin, 0x4000.bin – user1.0x01000.bin, user1_0x11000.bin, user2_0x41000.bin and user2_0x5000.bin

    If I click on the left and hit REFRESH they appear.

    So which of the 3 options did you use to actually program the chip? I have flash_ota_boot, upload_cloud and upload_local. I have no idea why there are 3 options – elsewhere I see only “flash”

  6. So having hit refresh I tried flat_ota_boot.. SUCCESS…. I think that was more luck than anything else but clearly it’s working…

    Then I realised I’ve no idea what to do next… Serially it says “Station idle”. and “Station no_ap_found… from what I recall you need something like IBM’s “Broker” so this has to talk to a broker, your mobile phone or whatever talks to the broker and by that, you can send messages to the unit.. but.. how.. I could not see any info with this – I don’t know what address/name it has etc…

    Any ideas?

  7. It did throw me a little yesterday, there were too many options, and I was left scratching my head for a while. My firmware directory is within the project files. In the same base directory are .settings, build, driver, firmware, include and user.

    The user files are for over the air update, not tried that, as not got that far.

    If you delete all the files from your firmware directory, and hit the ALL button, you will get the 2 firmware files created 0x00000.bin and 0x40000.bin which I flash to the chip using the modemcu flasher.

    The end of the build log looks like

    LD build/app.out
    FW firmware/0x00000.bin
    FW firmware/0x40000.bin
    Usage: 1.bin 2.bin

    I’ve not looked into getting the python flasher working yet, it’s most likely a path problem, will look at that tomorrow though.


    • I use Mosquitto as the broker on my main PC. You do need to set up the server ip address and username / password. There is a user_config.h file that holds the default information (include folder).

      I’m still a bit of a newbie with this environment. I’m aiming to get the esp8266 to do simple sensor reading / light switching, etc without having to introduce and arduino to the mix.

      The idea being I subscribe to a channel for that switch say, and then sending an mqtt message to that channel will throw a relay. Another sensor will simply publish its data to a channel that can be read by anything else that subscribes to that channel.


      • YES, that’s what I was hoping for ages ago with Arduino but they never implemented the user name and password – so I scrapped that.. this as you say is great – and I believe that with NETIO, one of the planned options for the future (he’s not that fast at bringing out upgrades) is MQTT. I was thinking more of a network in the house – presumably one could have one unit talking to another via MQTT.

        Ok, well clearly I’m going blind as I completely missed the user_config.h file first time around.. and I’m STILL not seeing it… I’m in USER folder, there’s a config.h… and at the end it even has a comment saying “USER_CONFIG.H” but nothing in there about actually entering the router name and pass.. where did you put those in?

    • Well, I have the files, I have them blown … and now.. I think it needs to know where my router is — do you have any further info ? Did I miss a “read_me_for_idiots.doc” file ??

      • user_config.h has all the information you need 😀

        The defaults are pretty poor, he doesn’t use the standard mqtt port, so most of the settings in that files will need to be customised to your setup.

      • Ok, I really am not dense, HONESTLY.. here’s what’s in my CONFIG.H file..
        * config.h
        * Created on: Dec 6, 2014
        * Author: Minh

        #ifndef USER_CONFIG_H_
        #define USER_CONFIG_H_
        #include “os_type.h”
        #include “user_config.h”
        typedef struct{
        uint32_t cfg_holder;
        uint32_t device_id;

        uint8_t sta_ssid[32];
        uint8_t sta_pwd[32];
        uint32_t sta_type;

        uint8_t ap_ssid[32];
        uint8_t ap_pwd[32];
        uint32_t ap_type;

        uint8_t mqtt_host[64];
        uint32_t mqtt_port;

        uint8_t ota_host[64];
        uint32_t ota_port;

        uint8_t ota_key[64];
        } SYSCFG;

        typedef struct {
        uint8 flag;
        uint8 pad[3];
        } SAVE_FLAG;

        void CFG_Save();
        void CFG_Load();

        extern SYSCFG sysCfg;

        #endif /* USER_CONFIG_H_ */

        Clearly there is the space for ssid etc but no dummies.. I would have expected something like…

        strcpy(sta_ssid,”myaccesspoint”) or something… am I missing the point..

        Go gentle!!

    • Glen. Ok, after following the instructions I ended up with a working installation which blew files (more than 2) for MQTT successfully. We tried here at my friends house the exact same sequence of operations on 2 machines (Win 8) and although the code compiles – and blows – using the Python internal stuff.. we get this..

      15:38:21 **** Build of configuration Default for project mqtt_pub ****
      mingw32-make.exe -f C:/Espressif/examples/mqtt/Makefile all
      CC driver/uart.c
      CC user/utils.c
      CC user/user_main.c
      CC user/config.c
      CC user/mqtt_msg.c
      AR build/app_app.a
      LD build/app.out
      FW firmware/0x00000.bin
      FW firmware/0x40000.bin
      C:/Espressif/examples/mqtt/Makefile:162: recipe for target ‘firmware/0x40000.bin’ failed
      process_begin: CreateProcess(NULL, python c:\Espressif\ESP8266_SDK\tools\ firmware/0x00000.bin firmware/0x40000.bin firmware/app.bin, …) failed.
      make (e=2): The system cannot find the file specified.

      mingw32-make.exe: *** [firmware/0x40000.bin] Error 2

      As you can see it highlights a couple of issues – but these are NOT stopping the compiled code from programming – and working – the 0x40000 and 0x00000 files ARE there.

      That’s an ALL compilation.. OTA compile produces a different error..

      16:17:10 **** Build of configuration Default for project mqtt_pub ****
      mingw32-make.exe -f C:/Espressif/examples/mqtt/Makefile build_ota
      CC driver/uart.c
      CC user/utils.c
      CC user/user_main.c
      CC user/config.c
      CC user/mqtt_msg.c
      CC user/mqtt.c
      AR build/app_app1.a
      LD build/app1.out
      FW firmware/user1_0x01000.bin
      FW firmware/user1_0x11000.bin
      C:/Espressif/examples/mqtt/Makefile:181: recipe for target ‘firmware/user1_0x11000.bin’ failed
      process_begin: CreateProcess(NULL, python c:\Espressif\ESP8266_SDK\tools\ firmware/user1_0x01000.bin firmware/user1_0x11000.bin firmware/user1.bin, …) failed.
      make (e=2): The system cannot find the file specified.

      mingw32-make.exe: *** [firmware/user1_0x11000.bin] Error 2

      16:17:17 Build Finished (took 7s.158ms)

      I don’t understand why these are happening on 2 machine and did not on my machine back home yet they are not stopping the process working… indeed I have a setup here with one ESP8266 relaying an MQTT message to another – and the other is turning a light on and off – so clearly we are successfully compiling – do you know why these messages would appear. Incidentally trying to copy the MAKE FILE from AT V2.0 to this directory failed – they’er not the same…

      Any ideas? It’s just annoying even with successful compilation having errors showing up like this.

      I could not incidentally get the plugin terminal to work.. I used the 32 bit Python because the 64 bit version (2.7.9) would not install – just disappeared.

      • From the 1st log post it looks like it’s created an additional file firmware/app.bin, or at least trying to flash that file to the chip, when it hasn’t been created.

        In the windows makefile, these 2 lines are executed when flashing firmware

        flash: firmware/0x00000.bin firmware/0x40000.bin
        $(PYTHON) $(ESPTOOL) -p $(ESPPORT) write_flash 0x00000 firmware/0x00000.bin 0x40000 firmware/0x40000.bin

        There is no mention of the mysterious app.bin mentioned in my makefile.

        Is this a typo that has crept into the makefile?

      • Glen to clarify – at home I used the makefile and it worked – I didn’t copy the Windows makefile into it or anything – yet here we had to comment out around 6 lines to get a perfect compile with no error messages (the one with error messages still worked correctly) – tha’ts frightening as it’s the same installation. When you did yours did you just use the MAKEFILE or overwrite it with the Windows one?

        Here’s what we ended up commenting out ..

        $(FW_FILE_2): $(TARGET_OUT)
        $(vecho) “FW $@”
        $(Q) $(FW_TOOL) -eo $(TARGET_OUT) $(FW_FILE_2_ARGS)
        # $(Q) $(MERGE_TOOL) $(FW_FILE_1) $(FW_FILE_2) firmware/app.bin

        $(FW_FILE_U1_2): $(TARGET_OUT1)
        $(vecho) “FW $@”
        $(Q) $(FW_TOOL) -eo $(TARGET_OUT1) $(FW_USER1_2_ARGS)
        # $(Q) $(MERGE_TOOL) $(FW_FILE_U1_1) $(FW_FILE_U1_2) $(FW_FILE_U1)
        # $(vecho) “CREATE ” $(FW_FILE_U1_1) $(FW_FILE_U1_2) $(FW_FILE_U1)

        $(FW_FILE_U2_2): $(TARGET_OUT2)
        $(vecho) “FW $@”
        $(Q) $(FW_TOOL) -eo $(TARGET_OUT2) $(FW_USER2_2_ARGS)
        # $(Q) $(MERGE_TOOL) $(FW_FILE_U2_1) $(FW_FILE_U2_2) $(FW_FILE_U2)
        # $(vecho) “CREATE ” $(FW_FILE_U2_1) $(FW_FILE_U2_2) $(FW_FILE_U2)

        We know this compiles and works now but we have no idea really why we had to comment that stuff out…

        I want to be confident I understand this as I think this MQTT code has some great potential – by the time I was finished last night we had it flashing GPIO-0 and had 2 ESP-01s sending messages – if I ever get to grips with IBMs MOSQUITTO (which REALLY needs a gui) I think we’ll have a great tool here. I envisage lots of ESP-01s reading temperature and sending it back via MQTT, knowing the time via a global MQTT subscription to a TIME message – and lots more but understanding is key. Hey and thanks for your help to catch up – really appreciated.

      • Seems wordpress wont allow going to deeply with the replies, so replying at this depth is the maximum.

        I made no changes at all to the the 1.0.4 version of the windows build, the only additional thing I did was to add this

        Put these files into dir C:\Espressif\xtensa-lx106-elf\lib\gcc\xtensa-lx106-elf\4.8.2\include\xtensa

        But I don’t think that will make any difference?

        Which build button are you using? I use ALL which creates the 2 files 0x00000.bin and 0x40000.bin

        I compile on windows 8.1 x64, and have not had any issues that required any changes to the build files.

      • Oh and ignore the wordpress comment, it put the reply at the right place, even though the reply button is higher up the page.

      • RIGHT – the fog is slowly clearing.. The MQTT make file uses the PYTHON .PY version of the chip-blower – whereas the MQTT makefile uses the compiled EXE – the EXE is included with the distribution whereas Python is not. SO…

        First modification to the MQTT makefile… path and port
        ESPTOOL ?= c:\Espressif\utils\esptool.exe
        ESPPORT ?= COM4

        That instead of the original 3 lines… path and port
        PYTHON ?= C:\Python27\python.exe
        ESPTOOL ?= c:\Espressif\utils\
        ESPPORT ?= COM2

        Further down the file there is a reference to the PYTHON setup..

        flash: firmware/0x00000.bin firmware/0x40000.bin
        $(PYTHON) $(ESPTOOL) -p $(ESPPORT) write_flash 0x00000 firmware/0x00000.bin 0x40000 firmware/0x40000.bin


        Actually I think there are a couple – I deleted them – and LO AND BEHOLD the chip blowing works without PYTHON!

        But funnily enough – even though my Windows 7 setup works with the original makefile with no errors – on my Windows 8 machine, I still get the errors I referred to earlier on two Windows 8 machines at my friend’s place.. SO I made the same changes referred to elsewhere in this blog, commenting out parts of the makefile as I detailed.

        (I’m so glad I stored it here)..

        And.. error free compilation – error free chip blowing!! I really would love to know WHY I need to comment that stuff out – but hey – it works. I’m going to cover MQTT in greater depth elsewhere as I think this has a lot of potential – no, I KNOW it has. But first I need to make a decent Android client – and that is a tad harder and requires I get my credit card out (latest B4A – if you don’t own it, you don’t get support).

  8. Thats not the USER_config.h file 🙂

    In your directory structure in the left pain, expand the include folder you should see at_version.h, at.h and user_config.h <<< thats the fella you want

    • AHAH!!! Yes, it does help if you look in the right directory – well done – well seen you’ve had one more day at this than me! Ah yes, I see. God there are lots of things to put in there. I’d best go get me an account somewhere to start the ball rolling – Oh I remember, last time I used the IBM broker… something I had to run on one of my machines.. any ideas for a free broker somewhere?

      Hey and thanks for this GLEN… this looks like fun!!

    • Right, well I got up early in the morning… could not figure out which of the two AP sets to fill in for my router in the user config so I filled in both…. and it’s connected. I’m running Mosquitto on the PC. The ESP-01 seems to have subscribed itself to /009F4C4F/data and /009F4C4F/ota – I have no idea where those topics came from do you?. If I send from my mobile phones to either of those, the message pops up on the terminal windows of the ESP-01.. HURRAY… except for two things – I have no idea where it got those topic names from – and I have no idea how to get the little thing to send a message back.

      Any thoughts on that? With luck you’re a day ahead of me ? 🙂

      A tiny bit of doc on this would have been really good – maybe there’s something and I missed it.. I mean it’s great that it works.. but now I want more…

      Also looking at the code… I now see.

      os_sprintf(client_id, MQTT_CLIENT_ID, sysCfg.device_id); //MQTT client id: DVES_A01234567
      os_sprintf(mqtt_topic[0], “/%08X/data”, sysCfg.device_id); // subscribe topic /chipid/data, example: /A01234567/data
      os_sprintf(mqtt_topic[1], “/%08X/ota”,sysCfg.device_id); // subscribe topic /chipid/ota, example: /A01234567/ota
      os_sprintf(pub_topic, “/%08X/send”, sysCfg.device_id); // send data to topic: /chipid/send

      So it’s subscribing to those two topics- and that’s fine and that works – but it also looks like it’s sending to a similarly named topic with /send in the name so in my phone I’ve subscribed to the two topics above and also /009F4C4F/send

      But when I power up the little unit, my phone is not seeing a message from it and it LOOKS like it should – would you agree?

      • Morning Peter,

        The line os_sprintf(pub_topic, “/%08X/send”, sysCfg.device_id); is simply setting up the buffer for the publish topic. It is used in the function below it MQTT_Pub(uint32_t) to send a message.

        That function is currently not called, so nothing will be sent. It looked like he was connecting his code to a passive IR, and it was sending its state.

        A quick and dirty test would be to echo a channel back out of another channel. At the end of deliver_publish(), try adding a mqtt_publish_with_length(pub_topic, buf, event_data.data_length, 0, 0); should be around line 238 in mqtt.c

        This is untested, just a thought from looking at the code.

      • Oh, and the topics are the deviceID, a way of knowing which esp is sending the message. You can alter the topics in line 556 / 557 of mqtt.c which is where is where it builds the 2 topic buffers.

      • I’ve collected all comments- off to a friend’s today where I hope we will work on this – thank you SO MUCH for your feedback Glen and others. Much appreciated. Some travel in the snow now so don’t expect comments for a while…

  9. I was wondering whether you’d seen that one yet. For something to do yesterday between eating leftovers and napping, I also tried CHERT’s MinGW installation instructions on my win8 laptop, and I was also successful. Proof positive that those were indeed good instructions! I’m away from my other hardware so I can’t try any of the compiled bins yet.

  10. Excellent – MinGW is part of that. Thankfully those of us who want to experiment with ESP8266 and not learn a new way of life now have something to help us do the job. Marvelous… I do however need to get to grips with the MAKE file as there is more than one project out there that does NOT included the Windows Make file… Lua being one. I’m hoping the designer will help me to work on that and he has sent some preliminary info.

  11. Hi Sameh… ok don’t assume too much – I’m still on the learning curve. I have several projects working in the Eclipse environment but they have a “” file which this does not – I’ve seen a snippet of code which I didn’t really follow, I’m hoping the author can add such a file to the projects so that hopefully we can just copy the lot into the examples directory and compile and run like the other projects. I’m no-where near understanding the MAKE files sufficiently to do that myself yet. If anyone can make this file I’m happy to give it a test.

    • Makefiles are pretty generic, you can take the windows makefile from mqtt_pub and stick it in the other directory and it will just work.

      They are fairly simple once you get used to them 🙂

    • Hello,
      Concentrated on the “esp_iot_rtos_sdk” example.
      I looked into the makefiles and tried to understand.
      Found: is just a clone op (the real) Makefile
      Makefile.Linux is a clone of the Makefile to be used in Linux(most likely)

      To change things like ESPPORT’s or SDK_BASE’s just change their values in the makefile.

      # base directory of the ESP8266 SDK package, absolute
      #SDK_BASE ?= c:/Espressif/ESP8266_SDK
      SDK_BASE ?= C:\Espressif\examples\esp_iot_rtos_sdk

      If you dont want to edit the Makefile, then just add them to the project properties in Eclipse : Properties>C/C++ Build> environment > Add , then fill in the correct values.
      Name : ESPPORT
      Value : COM3
      Name : SDK_BASE
      Value : C:\Espressif\examples\esp_iot_rtos_sdk

      These will replace the makefile defines.
      Compiles and runs as expected.(did not realy test the example , but serial output works)

      To check the environment variables , I made a new button “defines” under tab Make Target in Eclipse and added following to the Makefile (like clobber: or clean:)

      @echo ESSPORT: $(ESPPORT)
      @echo SDK_BASE: $(SDK_BASE)


  12. Oh THAT’s right – I forgot – thanks for that Joao. I really must keep these diagrams – I did it on Powerpoint and threw the original away.. I should know better. Well anyone looking in now knows waht GPIO15 is. I’ve a use for some of those pins.. I’m beginning for the moment to see the ESP boards a bit differerntly now I have access to a Windows development platform, I think some of those pins may find good use as status indicators.

  13. hey scargill i love your work you provide such a good information regarding this chip i m having some trouble in installing the window dev kit i m having issue in MinGW installation my eclipse shows error g++ not found path gcc not found path and it did not find the gcc toolchain i don’t know for sure but i think its because my MinGW isn’t installed properly hey please help me

    • I am only one step ahead of you. I can only suggest that you follow the instructions again BY THE LETTER as that is how I managed to get this to work – even then I had to make minor changes to the MAKEFILE on one project as the ECLIPSE setup could not see the Python27 setup. If you follow the instructions (and I can only speak for Windows 7 and Windows 8.1) properly you should end up with a working installation.

  14. Hi,

    Big fan of all the information here. Well done in collecting it all Peter!

    In this article you mention that you can modify, compile and flash new code in 26 seconds… I can not 😦
    I can do the modify and compile bit in no time but it takes several minutes to flash. Did you need to change anything to increase the baud rate or anything to make it flash faster?


    • SEVERAL MINUTES!!!!?!?!?!!!?!!?!?!?! Not even a large project like the LUA interpreter (which I just got going) takes more than, what, 30 seconds or so to FLASH. Certainly not over a minute. Any ideas anyone to help Millers here?

    • Did some more playing… I was using a TI MSP430 Launchpad as a USB->Serial bridge (the only thing I could find that is 3.3v) and today I managed to find a 3.3v FTDI adapter. Now flashing with under OSX takes about a tenth of the time but I’m struggling to get it working in Eclipse under Windows 8.1 (in a virtual machine) where the TI board worked perfectly (except for the speed) in both

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s