UIFlow 2.0.0 firmware preview version



  • @aivarannamaa

    Hi, sorry for taking so long to reply, just finished the Chinese New Year holiday :)

    This is great news! The old MicroPython in M5Stack firmware was the last remaining obstacle holding me from removing some ugly workarounds in Thonny's MicroPython backend.
    According to my quick initial test Thonny is happy with the new firmware. I tried the original gray M5Stack and Atom Lite. With the gray M5Stack even the "paste" communication mode, which for some reason did't work with M5 earlier firmwares, now seems to work without problems. With Atom Lite it still causes problems, which I'll investigate later.

    Thanks, the old MicroPython firmware for M5Stack(or UIFlow firmware) there are indeed some incompatibilities with micropython (such as paste code in repl mode).

    I also like the decision to use common firmware for all M5 devices and the fact that now one can use the same esptool arguments as for other ESP32 devices. This means Thonny users can use the built-in flashing dialog for M5 devices.

    Yes, one firmware that works for all M5 devices would be a good choice, but this would also be a limitation since the flash chip size is different for different devices, but we can guarantee that the esptool arguments will be the same (only For ESP32, if it is S2 or C3, may need to add some additional parameters).

    I'm considering adding a separate "MicroPython (M5Stack)" back-end in the upcoming Thonny 4.0, but this is warranted if it came together with M5-specific MicroPython stub files (.pyi) for autocompletion and static analysis (one of the main theme of Thonny 4.0 will be improved autocompletion).
    This is where you could help me. Most likely I don't find time for compiling the stubs from the scarce documentation myself, but if you created the pyi-files describing M5-specific modules, I would include them in Thonny 4.0 under "MicroPython (M5Stack)" back-end.

    Wow, this is really good news.Thank you very much, this is currently a very early preview firmware, and some API modifications and adjustments may be made later, but I am very willing to keep in touch with you, I will try to process a pyi file, is mypy tool okay?

    Have a nice day.
    IAMLIUBO



  • @ajb2k3

    Hi, sorry for taking so long to reply, just finished the Chinese New Year holiday :)

    does this include the stamp pico and stamp C3?

    I have not tested the STAMP series, but STAMP-C3 is not supported (the architecture is different and needs to be compiled separately)

    Have a nice day.
    IAMLIUBO



  • @dario

    Hi, sorry for taking so long to reply and thanks for report this bug, We will investigate this issue as soon as possible.

    Have a nice day.
    IAMLIUBO



  • Hi @lmartu68 @wkibler @Philip,

    Hi, sorry for taking so long to reply, just finished the Chinese New Year holiday :)

    We did have some issues with our servers during the holidays, sorry about that, it should be fixed now, sorry again.

    Have a nice day.
    IAMLIUBO



  • @felmue

    Hi, sorry for taking so long to reply.

    Trying the beta firmware on an M5Stamp C3 fails - I guess due to the risk architecture which probably requires a different bootloader. Or am I missing something?

    I'm very sorry, it's my problem, I didn't say that this firmware does not support C3 chip, it currently supports ESP32, because of the different architecture, it is impossible to make a firmware support esp32, esp32-c3, esp32-s2, esp32-s3 at the same time.



  • @IAMLIUBO I have been recommending a firmware builder for a while because of the issue you had with firmware size.

    Please, please, please me need a stand alone server that can be run on a raspberry pi!



  • @felmue said in UIFlow 2.0.0 firmware preview version:

    Traceback (most recent call last):
      File "<stdin>", line 2, in <module>
    RuntimeError: Wifi Unknown Error 0x0101
    

    I tried it, there is indeed a bug, devices with psram might work, try it and we'll fix it.

    P.S.

    log:

    >>> wifi = network.WLAN(network.STA_IF)
    I (28862) wifi:wifi driver task: 3ffd3600, prio:23, stack:6656, core=0
    I (28862) system_api: Base MAC address is not set
    I (28862) system_api: read default base MAC address from EFUSE
    I (28872) wifi:wifi firmware version: 0d44bbe
    I (28872) wifi:wifi certification version: v7.0
    I (28872) wifi:config NVS flash: enabled
    I (28872) wifi:config nano formating: disabled
    I (28882) wifi:Init data frame dynamic rx buffer num: 32
    I (28882) wifi:Init management frame dynamic rx buffer num: 32
    I (28892) wifi:Init management short buffer num: 32
    I (28892) wifi:Init dynamic tx buffer num: 32
    I (28902) wifi:Init tx cache buffer num: 32
    I (28902) wifi:Init static rx buffer size: 1600
    W (28912) wifi:malloc buffer fail
    I (28912) wifi:Init static rx buffer num: 3
    I (28912) wifi:Init dynamic rx buffer num: 32
    E (28922) wifi:Expected to init 10 rx buffer, actual is 3
    I (28922) wifi:Deinit lldesc rx mblock:0
    I (28932) wifi:Deinit lldesc rx mblock:0
    I (28932) wifi:Deinit lldesc rx mblock:0
    I (28932) wifi:Deinit lldesc rx mblock:0
    I (28952) wifi_init: rx ba win: 6
    I (28952) wifi_init: tcpip mbox: 32
    I (28952) wifi_init: udp mbox: 6
    I (28952) wifi_init: tcp mbox: 6
    I (28952) wifi_init: tcp tx win: 5744
    I (28962) wifi_init: tcp rx win: 5744
    I (28962) wifi_init: tcp mss: 1440
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    RuntimeError: Wifi Unknown Error 0x0101
    

    Thanks for report this :)

    Have a nice day.
    IAMLIUBO



  • @ajb2k3

    @IAMLIUBO I have been recommending a firmware builder for a while because of the issue you had with firmware size.
    Please, please, please me need a stand alone server that can be run on a raspberry pi!

    This is a little lower priority, there are still some important things to deal with, we will release a preview version as soon as possible (online firmware function selection and generation).

    Thanks for your recommend and help us be better.

    Have a nice day.
    IAMLIUBO



  • @iamliubo BTW I’m not stating here just moaning, I am actually working on documentation for UIFlow it’s just that the IoT side of things is proving a challange. I’m not sure if the issue with Blynk is Blynk side or UIFLOW side.



  • Hello @IAMLIUBO

    no need to apologize - I hope you had a great holiday.

    Re ESP32c3: thank you for the clarification. I suspected that much. The different architecture requires a different firmware.

    Re WiFi: I can confirm that scanning for WiFi APs works on an M5Core2 (which has PSRAM). So indeed, it seems to be a RAM issue.

    Thanks
    Felix



  • @ajb2k3

    Thanks for your contribution.

    I’m not sure if the issue with Blynk is Blynk side or UIFLOW side.

    Based on previous discussions here, there are indeed some issues that need to be identified and dealt with, which we will test and investigate as soon as possible.



  • @felmue

    Re WiFi: I can confirm that scanning for WiFi APs works on an M5Core2 (which has PSRAM). So indeed, it seems to be a RAM issue.

    Yes, thanks for you feedback, I always use CORE2 for develop and test,so I didn't notice that, we will release some new FW at this friday with more bug fixed.



  • Hello, please when you launch UiFlow 2.0 check all the existing functions, most of them doesn't work

    i.e. I am trying to use UHF-RFID unit on UIFlow and most of blocks don't do anything or give errors:

    • Set region code ERROR name REGIN_EU isn't defined
    • Multiple polling read NOT WORKING
    • Select mode NOT WORKING
    • Set tx power ALWAYS RETURN 256
    • Enable /disable continuous carrier NOT WORKING

    And so on...



  • Hi @IAMLIUBO
    Will LVGL be included in this UIFLOW version just like current one?



  • Hi,
    I just recently stepped into the 'world of M5Stack'. I am learning fast :-). Yesterday I published a small repo for M5Stack on GitHub and posted this fact in this Community forum. Thank you for your efforts to improve the firmware for M5Stack devices. The past ten years I experimented with Arduino, Raspberry Pi's (all models) , ESP32-S2. I prefer to write in Python but also built projects in C, C++. While trying to get aquainted to the M5Stack firmware I used REPL in Thonny to see which modules/functions are present in the several libraries. I discovered that there exist (at least appear in the dir() listings issued in REPL of Thonny). doubling of functions in the various library modules, for example: in 'vfs' exist: mount, umount, mkdir, chdir etcetera. These same functions also exist in the 'uos' module: mount, umount, mkdir, chdir and more. The module 'os' has the same contents as 'uos'. To me this is: a) confusing; b) if it are not a kind of 'links' (or say: 'redirection' -- my expression to this phenomenon) of a function in library 'x' to a function in libary 'y', then it will be a waste of memory too; c) this fact does not help to improve the quality and reliability of programs. I think that a function should be unique: be in one place only. This will also make writing and reading code more easy; helps preventing bugs and so on. But this is just a thinking on my side. I am not familiar with the internals of the current set of modules that make up the micropython firmware for the M5Stack family of devices. I started programming around 1978 with a 'computer' having only 64kB of RAM. Learning all kind of tricks, e.g.: re-use of RAM at runtime. If your intention is to 'optimize' the firmware you could start with a 'cleanup session' by taking out these confusing doublings. Question : is there a reason to have the same function in more than one library/module? This is just my first impression which I wanted to share with you since you asked: '...that you help us develop and test firmware...'
    Regards,
    Paulus Schulinck (@Paulskpt)



  • This is my second feedback. This is about documentation. The subject of 'documentation' It is an old story. Programmers were always late with documenting their work. Often they waited with documenting until the last moment. Nowadays there are tools to assist us. I see that M5Stack has quite some documentation. But in my short life of experience in this M5Stack world, and viewing through the mind of a programmer, (until now) I could not find a central place where all the functions are documented. I see that the documentation is more device-orientated. This is good to help a starter; to give him/her adequate documentation for that device to experiment with. Yes, there is a good explanation of UIFlow. However, for the more experienced programmer, that does not want to spend time on building blockly structures, a central place to quickly lookup a documentation of libraries/functions, I missed. Something like 'read-the-docs' system. I googled for: m5stack read the docs. The first 'hit' was: M5Stak | Read the Docs'. It was a quite empty page. I clicked on a link to a that stated: 'Repository' : Link to repo M5Stack read-the-docs' . I arrived at m5-docs. On this page is written: This repository is out of maintenance. Bad luck! Then I went back to the former page; I clicked on a link named master. I was re-directed to a page: m5stack read-the-docs. To my surprise the page is empty! Did I look in the wrong places?
    When I was writing my first micropython script for a M5Stack device, I had a simple question when I wanted to set a text font for the lcd. I found that the m5stack.display.TFT module has an attribute (function) called font. Immediately came up in my mind the question: 'but what does 'font' do? By experimenting I discovered I could set a font like lcd.FONT_Default. Next the question: 'How can I know which font type already has been set with 'font'? Can I use 'font' to perform a 'get'? By experimenting I discovered that issuing a m5stack.display.TFT.font() command resulted in: TypeError: function missing 1 required positional arguments. My conclusion: font() cannot be used to find out which font is active. As you see, I learn to program a M5Stack device the 'hard' way. That is kinda frustrating. Documentation is what I need. Did I miss something while searching for the 'right' and 'useful' documentation? (Afterburner/addition: some hours after writing this post I happened to come across m5-docs/docs/en/api/lcd.md. There are a lot of descriptions of functions that are in that api/lcd library. I saw that, among many other functions, the library contains these functions: fontsLoaded() and unloadFont. But these functions are not in the UIFlow micropython firmware V1.9.4).
    What about an answer to: how to use an icon like m5stack.display.TFT.ICON_USB ? Where is that documented?
    Excuse me if I stepped on someones feet with this kind of critical feedback; being a newbie, ignorant to M5Stack. Yes, I want to learn more about M5Stack. Please show me the way. The needed information appears to be much dispersed. It would be very helpful that the information was more centralized. It appears to me a bit odd to find m5-docs in a place as Github. It should have been in a place like read-the-docs (or in both places).
    Regards,
    Paulus Schulinck (@Paulskpt)



  • Alas that could be my fault as I started documenting back in 2019 but was finding it hard to source documents. What I have on the API's is currently listed in this book https://github.com/Ajb2k3/UIFlowHandbook/blob/master/quickblockref.pdf



  • @paulskpt Hi Thanks for all your feedback, we appreciated it and will take that into account. So thi is the doc address:docs.m5stack.com
    Also, the API doc will be available soon in the coming days.



  • Hello guys

    how's the UiFlow version 2.0.x coming together? Any updates?

    Thanks
    Felix