@m5stack Any updates on this? Would be great to know how exactly the insides are wired up, how one can flash a new firmware on the Mega328, etc.
Posts made by fonix232
-
RE: PUSH-6060 schematics
-
Any update on the M5Paper "v2" or "-S3"?
Ever since the release of the original M5Paper, the community has been pointing out certain issues with the approach and components used. A really good counter-example was LilyGo's T5-4.7, which presumably used the same (or very similar) EPD, with touch and BMS in tow, plus a number of extra features. It also had some downsides (e.g. using a port multiplexer to communicate with the EPD directly, taking away processing power from the ESP32).
Since, LilyGo has updated their model with the ESP32-S3, with a slightly revamped design, and a similar price point (albeit without touch built in or a case).
I would love to see a next-gen model by M5Stack to be frank. M5 products feel more finished, ready-to-use for tinkerers and DIYers, and the support tends to be better as well. Simply said, I could take an M5Paper and slap it on my wall, and with some minimal coding I'd have a home control panel. With LilyGo products, I'd need to work around their odd design choices (e.g. USB port location), 3D print a case, and so on.
So to summarise, here's my "wish"list of what I'd love to see in an upgraded version of the M5Paper:
- ESP32-S3 module as core
- Direct USB connection (incredibly useful for e.g. CircuitPython!)
- A better EPD controller, preferably open source, and flashable from the ESP core (an RP2040 would work quite well for this purpose I think)
- A better BMS/fuel gauge (voltage based calculations are incredibly rudimentary)
- Proper deep sleep on the ESP cores
- USB-C port moved to the center of the side it resides in
- The three-direction side button replaced with a potentiometer wheel, with an optional click (or alternatively, an "A Button" on the side
Optional upgrades that would be welcome:
- Extra sensors built-in (e.g. brightness sensor)
- Front light on the EPD
- Second USB-C port for host mode
- POGO pins and magnetic mounting, similar to the "base" unit of a Core, or rather, the magnetic adapter, where the extra ports (Ports A, B and C) can be moved to (would be perfect for a wall mounted unit that can be pulled off for controls, and when reinserted, would charge and provide extra sensors).
There's been rumours that you guys are working on it, but it's been nearly three years since the release of the OG M5Paper, and aside from two very minor iterations, we've seen no updates...
-
RE: M5paper power consumption in light sleep
@volker EPD and GT911 should save you 130-160mA power draw. The IT8951 itself alone would be pulling most of that, the GT911 should be below 20mA even when actively used. It's a bummer M5 decided to use that crappy PMIC instead of the AXP192, which would've had the pins required to control those elements separately (also bummer that the e-ink display uses a separate, power-hungry controller...).
-
RE: M5Paper end of life?
@m5stack I'd gladly consult with your engineering team in my free time, to at least try to give a customer/consumer oriented viewpoint. I believe that a company works best if they listen to their customers and work together to get the best possible product out to the market.
Also, in the meantime, could you please confirm/answer the so far unanswered question from the thread linked above? About the IT8951E sources, if you'd be able to publish them, and if it's possible to flash the chip through the existing SPI interface. I'm pretty sure the community would be able to find the reason why it's sucking so much power unnecessarily, and we could possibly even fix it, so that future batches can ship with better performing components.
-
RE: M5Paper end of life?
@m5stack I've tagged you multiple times in the thread that detailed the issues with the M5Paper. Please check it under the Feature Wishlist category.
But to summarize:
- the switch to the SLM6635 from the previously used AXP192 is a downgrade - less channels to control, worse battery life control, and faulty voltage reporting during charging (basically it reports the charging voltage instead of the actual cell voltage, and also fails to charge above 4.2V while the cell in the M5Paper is 4.35V)
- the IT8951 is a massive power hog due to issues in its firmware. It's obvious from the schematics that you planned to hook that up to a USB port as well (which never happened and makes firmware updates impossible without HW mod), but the point is... This damn driver eats 80-100mA in idle. Which is unacceptable. There were suggestions to use a secondary MCU that would take care of the eink waveform generation with a similar API the IT8951 uses (but open source), or a shift register.
- the SHT30 is a bit useless because the internal heat of the unit skews temperature, and humidity can't be reliably detected with the limited airflow. An MMU would be much more beneficial
- I would also like to see a newer ESP32 (preferably the S3, when it becomes available), due to those having built in USB stack, making the M5Paper a great handheld hacking tool - e.g. one could program it to act as a USB keyboard, or a hard disk (exposing the SD card), or even a hardware crypto wallet similar to Trezor.
Overall the display and form factor are great, but there's a lot more potential that could be brought to your users with just a little more attention. The current M5Paper just feels like you guys got a bunch of new engineers that brought some relevant experience, and wanted to use parts that they knew how to work with, instead of picking parts that actually work well together. LilyGO brought out a very similar board with the (almost) same display, but better battery management, no power sucking eink controller, or unnecessary sensors.
Edit: here's the link for the topic I've mentioned https://community.m5stack.com/topic/3007/m5paper-ideas-recommendations-for-a-revision-or-v2-model/21
-
RE: M5Paper end of life?
@ajb2k3 that tweet from 29 May is showing the same board as the current M5Paper. Even the same display driver chip - which seems to be in short supply.
@m5stack I wonder if the issues with v1.0 that have been pointed out by multiple people have been fixed - especially the power management part.
-
RE: [M5Paper] An EPub Reader using ESP-IDF
@lypanov the main power hog on the M5Paper is the secondary MCU in control of the e-ink display. The IT8951, while a great chip that simplifies e-ink management, has a massive issue that has been pointed out multiple times - it's idle power use is around 100-130mA, which is not really acceptable for a low power solution. You could counter this by manually disabling power to it after a certain period of inactivity, but that's extra hassle.
If you want a slightly better power managed board with similar specs, I'd recommend looking into the LilyGO TTGO T5 4.7 - it uses pretty much the same display module, same ESP32, same RAM and flash, but no wonky e-ink controller (instead it's handled by the ESP32), and much better power management.
-
RE: [M5Paper] Ideas/recommendations for a revision or V2 model
@m5stack it's been 3 weeks, without even a confirmation that you've read the issue. Could we please get an update? Or maybe @Zontex, you could bug someone at M5 HQ, since you seem to be more active.
-
RE: [M5Paper] Ideas for a revision or V2 model - a font with degree-Celsius and degree-Fahrenheit
This does not need a "revision" or "V2" model, it's a simple software addition. And you can already load your own fonts if needed.
-
RE: Core Ink screen fades on reset
A reset will trigger a power cycle, which in turn resets the SPI connection to the e-ink display. The display has a controller built-in, which at this point is also power cycled, and most likely runs the initialisation of the screen. So when you press the reset button, the display thinks it needs to get into a "ready for new data" state, which is why it "fades".
If you want to work this around, I'd recommend storing the screen contents every time you write to the screen, to storage that is preserved during a power cycle (basically, dump that 200x200 4b array onto the flash), and make sure that your startup handling "updates" the screen with that content immediately after the device is initialised.
-
RE: Randomness ...
Recommendation: use GitHub (or similar) to host your code, not Google Drive :) It makes things easier to read through quickly, plus people can make pull requests to improve the code.
-
RE: [M5Paper] Ideas/recommendations for a revision or V2 model
Okay, so ITE came back to me regarding the IT8951 things. Unfortunately they do not offer the source code directly to developers, only to business partners - and that's M5Stack themselves. @m5stack could you please give us some details, or if the NDA allows, release parts of the IT8951 firmware?
-
RE: [M5Paper] Ideas/recommendations for a revision or V2 model
@bricox The same red symbol appears on the Waveshare schematics for the IT8951 Pi HAT, in the same place (although the M5Paper schematics have the symbol on both the IT8951 and the USB port side, whereas the Waveshare one only has it on the USB port). And based on the second page of that PDF that shows the exact traces, there's nothing between the IT8951's pins and the USB port, just the trace. No resistors, capacitors, nada.
Nonetheless, in my opinion, that USB port could be "easily" soldered in (by someone who knows how to solder properly, i.e. not me), and used to directly communicate with the IT8951, and power the device in the process (the voltage line of this port is also hooked up to the PMIC, just like the main USB port).
-
RE: M5Paper EPD power consumption
@bricox based on the documentation, it should be possible to set the touch panel in a gesture recognising mode - would be nice to be able to offload that from the ESP32, alongside the interrupt-instead-of-poll change. This would certainly improve battery life.
-
RE: [M5Paper] Ideas/recommendations for a revision or V2 model
@bricox are you sure about that USB-C port? Because according to the schematics, it goes to the USB lines of IT8951 (IT_DBG_P and IT_DBG_N, pins 52 and 51 on the IT8951, which matches the official IT8951 documentation - the Waveshare adapter board also connects those pins to its USB interface), while the UART lines of it connect to a grayed out (presumably not in the final design?) 4-pin port called J10. As the IT8951 has a built in USB interface, and the default firmware (at least on Waveshare panels) even provides a UMS interface with custom, I believe SCSI, commands similar to the SPI protocol.
There's a red symbol on both the M5Paper and the Waveshare IT8951 driver board's schematics where the IT8951 pins 51 and 52 connect to the USB port, which I do not know the meaning of. Could you enlighten me?
@m5stack could we please get some information on the IT8951? Of course within your NDA limitations. Things like changes you've managed to its firmware (apart from the display specific things like resolution, waveform generation, etc.). Is it possible to modify this firmware to reduce power consumption, introduce the SLEEP mode that is apparently missing, and to update it without hardware modifications (i.e. is there a firmware update solution via SPI, or only USB)?
-
RE: UIFlow 1.7.3
A kinda related, but strange question - could you please release the source code for the drivers of the various bits of hardware found in the UIFlow firmware? UIFlow is built upon MicroPython, and I would personally prefer to run a clean MicroPython build on a few devices of mine, however the lack of drivers makes it a bit harder than expected. I'm not interested in the UIFlow-related parts, just the low level Core/Unit/Module support drivers (e.g. for M5Paper, a driver for IT8951, a driver for the PMIC, SHT30, GT911). It would allow the community to build MicroPython images without proprietary code, and possibly result in faster updates as well. Plus, you could merge back community fixes into the official UIFlow firmware easily.
-
RE: [M5Paper] Ideas/recommendations for a revision or V2 model
Also, my TTGO T5 4.7 arrived, finally. Overall, a nice piece, although a bit rough around the edges compared to the M5Paper. Overall, the PCB seems to be better designed, everything is nicely sectioned apart. But, LilyGO did bum it up, the EPD connector is just sliiiiightly further from the edge than the ribbon itself, which results in some twisting of the cables, and I'm not sure I'm comfortable with it...
One thing I'm extremely unhappy with is the battery connector. I opted for the 18650 model (the difference is literally just the connector soldered - with a J2 female connector and 5 minutes of soldering I could convert it easily, but I want to use it with 18650 batteries for easy battery swapping), and the metal wings are outrageously bad quality. They are too rigid, and the edges were not finished properly, and I managed to cut open the wrap of one of my cells on the first insert. This was with great attention paid to the insertion process, and ~3 hours spent on filing down the connector edges (don't worry, I covered the rest of the board with painter's tape, and blasted it with some compressed air to make sure no metal fragments linger around). I think once I have a finalised 3D printed case for it, I'll remove the connector and replace it with a homemade spring-loaded version.
Another, interesting thing I noticed while digging around in the guts of the M5Stack... Apparently, there's a second, unpopulated USB-C port on the board.
None of the schematics mention it, and I can't really trace it, since the components are too tightly packed:It's right next (or, in the orientation of the above picture, below) the SD card slot. I'm not sure if it's meant to be a power port only (though the fact the data lines are labeled makes me think it isn't), or if it's directly connected to the IT8951 (which would make sense, since that MCU has a built in USB interface, which allows controlling and even updating the controller).
On another note, I reached out to ITE and requested the release of the source code + dev environment for the IT8951 firmware. With any luck, we should have the sources soon, and maybe we can put together a better, less resource-hungry one, just to make the M5Paper that tiny bit better.
EDIT:
I've been going through the M5Paper schematic to check that USB port and also the USB hookup of the IT8951... First thing I noticed is that the schematic says the M5Paper is supposed to have the IT8951E-64, yet we only have the regular IT8951E.
However, I've found the unpopulated Type-C port on the schematics - no idea how I missed it the first time around. It's J8, labeled
USB-TYPEC/NC
, and its data pins are connected to the IT8951's USB OTG pins, plus the VUSB rail. Meaning that with a quick solder job, one could add a secondary USB-C port that would allow direct communication with the IT8951. With a custom firmware, we could coax that MCU to act as, well, any kind of USB peripheral. And who knows, maybe other stuff could be also offloaded to it. IF we can get the source code for the damn controller. And that's a very big if. -
RE: [M5Paper] Ideas/recommendations for a revision or V2 model
@bricox yep, did some research and realised how the shift register can be used in place of the controller. Not sure if it's a definitely better solution. However I like your idea of using a smaller, more power-efficient MCU, especially if it has some deep sleep mode with quick wake.
I was also wondering - the IT8951 schematic shows that internally, it's a RISC-V microcontroller with a bunch of attachments (USB, I2C, SPI and SDMMC host interfaces). It also supports (apparently) firmware upgrades. I could not find any sources unfortunately, but, in theory, if we had those sources... Would it be possible to write a more optimised version of this firmware, one that would reduce the power usage? Obviously we don't even know what kind of RISC-V core it has, if it has any low power modes (though the fact that a "sleep" mode is supposedly implemented in it would suggest that it is capable of some sort of sleep mode, the data sheet even details what is powered and how in which state), and so on. Sadly the only documentation we have on this chip comes from an early draft (v0.2.x.x, from Waveshare), and even M5Stack decided not to attach this datasheet to the documentation. I can't help but wonder if they even got the firmware source and build environment, even if under an NDA.
-
RE: [M5Paper] Ideas/recommendations for a revision or V2 model
@bricox while I like the idea of using a smaller package, I think the ESP32-S3 is a better choice - it's basically the same as the ESP32-S2, however, with added bits that would be quite important for some of the possible applications of the M5Paper, including: SDIO (the S2 has no SDIO interface according to the docs), secure boot and flash encryption, and of course the S3 is dual-core instead of single-core, has larger internal memory (S2 has 320kB SRAM, S3 comes with 512kB), Bluetooth (the S2 is WiFi only)... Overall the S3 is a better package for a solution that needs to provide a bit higher performance and wider range of applications.
Also, the package you're quoting has considerably smaller flash and PSRAM. The M5Paper comes with 16MB of SPI flash, and 8MB PSRAM - 4x as much as the quoted package. I think it's a good trade-off for slightly less space on the board, and a handful less pins. The LilyGO T5 4.7 made the display work with a shift register, while still having the necessary pins available for external ports.
The reason why I'd like to see an update to the M5Paper is simply because of this revision's design faults. An ESP32-S2 would be a massive downgrade, and it's not something I'd like to see in a revised, upgraded version that fixes a number of issues, only to bring in a handful of limitations and setbacks.
-
RE: M5Paper UI Framework Sample Project
Looks good so far!
If you want a full UI framework, though, I think MicroPython is the better option, for the simple fact that you can push "apps" (technically Python applets) without the need of reflashing the device. I think the Odroid guys did some weird hackery with the Odroid GO where they use the OTA partition layout, have a "launcher" firmware on
factory
, and put the ROM/app to be run inota_0
andota_1
, set the boot flag, and reboot. But with MicroPython you don't even need to do that - you can run the scripts from SPIFFS, or from an SD card, without much trouble.MicroPython has the downside of having no generic UI library available, whereas for C/C++ you have plethora - there's GxEPD2 (which already has a base IT8951 implementation! One just needs to make a copy of that, change the pins, VCOM voltage, and it's good to go), LittlevGL, and of course Adafruit's TFT library. All of them are much, much better options than the hacked-together M5EPD base, unfortunately.