Current Lua downloadable firmware will be posted here

User avatar
By zeroday
#3171 Build 20150318

download pre-built bin here:

Change log:
    update u8glib.
    merge everything to master.

    add cjson module, only cjson.encode() and cjson.decode() is implemented.
read doc here

    bugs fixed: #239, #273.
    reduce coap module memory usage, add coap module to default built.

    fix bugs of spiffs.
    build both float and integer version latest releases.
    fix tmr.time().
    fix memory leak when DNS fail.

    update to the recent spiffs.
    add file.fsinfo() api, usage: remain, used, total = file.fsinfo().
    add Travis CI. please download the latest firmware from releases.
    add math lib, partial api work.
    u8g module, ws2812 module default enabled in dev-branch build.

    add node.compile() api to compile lua text file into lua bytecode file.
    this will reduce memory usage noticeably when require modules into NodeMCU.
    raise internal LUA_BUFFERSIZE from 1024 to 4096.
    lua require("mod") will load "" file first if exist.
    build latest pre_build bin.

    fix float print.
    update spiffs, add file.rename api to file module.
    fix some file system bug. need more tests.
    add support to 8Mbyte, 16Mbyte flash.
    remove node.led() and node.key() api.
    some update to lua_modules and examples.
    build latest pre_build bin.

migrate to sdk 0.9.5 release.
tmr.time() now return second(not precise yet).
build pre_build bin.

merge mqtt branch to master.
build pre_build bin.

merge mqtt module to new branch mqtt from
merge spi module from iabdalkader:spi.
fix #110,set local port to random in client mode.
modify to NOT set pin to input mode automatic.
add PATH env with C:\MinGW\bin;C:\MinGW\msys\1.0\bin;C:\Python27 in eclipse project. resolve #103.

fix net.socket:send() issue when multi sends are called.
NOTE: if data length is bigger than 1460, send next packet AFTER "sent" callback is called.
fix api, take 0xFF as a regular byte, not EOF.
pre_build/latest/nodemcu_512k_latest.bin is removed. use pre_build/latest/nodemcu_latest.bin instead.

retrive more ram back.
add api file.format() to rebuild file system.
rename "NodeMcu" to "NodeMCU" in firmware.
add some check for file system op.

update sdk to 0.9.5.
pre_build bin now compiled by gcc toolchain.
memory/heap usage optimized.
add support for multiple platform and toolchain include eclipse.
combine firmware for 512K, 1M, 2M, 4M flash to one. flash size auto-detected.
***esp8266 flash tools can be used to flash to different flash-size.

modify uart.on api, when run_input set to 0, uart.on now can read raw data from uart.
serial input now accept non-ascii chars.
fix dev-kit gpio map.
add setip, setmac, sleeptype api to wifi module.
add tmr.time() api to get rtc time and calibration.

    update to sdk 0.9.4
Note: no api change, but another 2k ram gone...
So, maybe it's better let you guys to decide which module to use.

    Important Re-arrange GPIO MAP due to development kit.


    Add bitwise operation module.
    Modify net.socket:connect() api to accept domain name, auto DNS.
    Add firmware for flash size 1Mbytes, 2Mbytes, 4Mbytes.

    modify wifi.xx.getip() to return nil, if ip is

    1, fix uart.setup(), now setup can set pins in other mode back to uart mode.
    2, add wifi.sta.status() api, to get connection status in station mode.
    3, modify to return a uint31 rather than uint32. now-=0x80000000 if now>0x7fffffff.

    increase alarm num in tmr module to 7.

    add uart.setup(), uart.write() api.

    1, add ow(1-wire module), from arduino, and use same api.
    2, add an 18b20 1-wire example.
    3, change net.socket.send() payload max len from 256 to 1460.
    4, modify gpio.mode() api, add internal pullup/float para.

    fix memory leak issue when input and run from console.

    1, fix the heap recover too slow issue, heap will recover in seconds, not minutes.
    2, modify the return of, return nil if file not exist, true if opend ok.
    3, move startup version display before doing the init.lua.
    4, modify wifi.ap.config(), remove the restart at the end of config.

    1, modify the max freq of pwm module to 1000.
    2, modify the max duty cycle of pwm module to 1023.
    3, add uart module, uart.on("data") api to receive data from uart.
Code: Select all    uart.on("data", function(data)
        print("receive from uart:", data)
        if data=="quit" then uart.on("data",nil) end    -- this cancel the callback
    end, 0)

    1, fix tmr.delay not work when delayed time < 1s.
    2, fix pwm module not work when freq<77.

    Fix memory leak for the dns api.

    1, Fix the wrong length of wifi password compairison when configuring sta. pwd,64byte. ssid,32byte.
    2, Fix dns problem, add a dns example to wiki.

    1, A temporary and dirty fix to heap drop issue:
    to avoid reboot, a tcp-server will NOT accept a connection from client, if there is not enough memory. :(
Code: Select all-- After 2 days debug, I guess, the reason heap(memory) takes a long time to recover, has been found.
-- It's not because of the Lua machine, but the system memory management part inside SDK.
-- After many many times of malloc/free in different sizes, I guess there will be memory fragment to sort out.
-- Anyway it's only a guess. I will contact with chip vendor to check this out.

    2, file.list() now returns a table only. will not print result in serial directly.

    1, fix tmr.delay to support more than 2s delay, may cause bacon time out, lost connection to AP.
    2, add tmr.wdclr to clear watchdog counter in chip, use in long time loop.
    3, fix UDP part of net module.
    4, add a timeout para to createServer(net.TCP, timeout).

    1, add adc module, use to read adc value, no tests made.
    2, add wifi.sta.getap() api to wifi.sta module, to get ap list.

    bug fixed: net.socket:connect() has no effect.

    bug fixed: as a tcp server, the connection can't closed with :close().
    tcp server: inactive connection will closed by server in 30s (previously 180s).
    add a test api node.input() to put lua chunk into lua interpretor, multi-line supported.
    add a test api node.ouput(function) to direct serial output to a callback function.
    file.readline() now returns line include EOL('\n'), and returns nil when EOF.

    full version firmware

    add api to file module
    now max 6 pwm channel is supported

    change log module to file module
    now file operation support multiple read/write
    for now file module only allowed one file opened

    delete log operation api from node module
    add log module
    modify wifi module api
    modify node.key long_press and short_press default function
    key is triged only when key is released
Last edited by zeroday on Wed Mar 18, 2015 9:15 am, edited 21 times in total.
User avatar
By scargill
#3188 Thanks HEAVENS it's not in LUA itself. Good luck with manufacturer, I have trouble keeping a conversation going as it takes days... you might want to give others details so they can pester manufacturer to fix the problem - we're all dying to get stuck into this software.