Screen: MPRO firmware hotfix 3

Recently some MPRO samples had reported random disconnect sometimes or can not detect at all.

After some investigation and testing, it is confirmed that it is not a software issue, but two possible problems, which are highly related to USB cables and PC USB voltage leak. The first problem is normally caused by the USB cable not matching the 90-ohm impedance standard, so the USB data quality is very poor, resulting in instability for long cables. The second problem is that some PC power supplies are not well shielded, and for long USB cables used for simracing, they act like antennas, receiving much more noise than the short cables inside the PC, causing the screen to not work normally or even worse, breaking the screen.

In the market, it is difficult to find high-quality USB cables. Therefore, for future MPRO samples, we will consider providing a suitable USB cable with better performance and reliability.

One more thing, MPro version currently do not support USB-TYPEC <=> USB-TYPEC cables, only support USB-TYPEA <=> USB-TYPEC cable or USB-TYPEA <=> microUSB + USB-TYPEC adaptor, later we will consider support USB-TYPEC <=> USB-TYPEC.

Screen: MPRO firmware hotfix 2

The new firmware fixed touch screen sometimes blocks display normal operate, also some small issues, add version information to firmware.

Download link is same: https://vonger.cn/misc/temp/mpro_upgrade.zip

Screen: Drive LEDs with MCU Part1

This is the working demo board, CH32V003 connect to V7B or MPRO driver board I2C interface. This way can save one USBHUB and ATMEGA, only need a very low cost CH32V003(0.1USD)

Source code upload to github.com/vonger/V7B_WS2812B

MPRO and V7B I2C CLK/DAT are in different position, so need a switcher to compatible them.

We also make some demo boards, if you need them contact support(a)vocore.io

Screen: MPRO firmware hotfix 1

First bug find, it is the MPRO driver board touch screen is not compatible with Simhub, sometimes it will not work after a while.

After a few days debug, this problem has fixed. Please download at https://vonger.cn/misc/temp/mpro_upgrade.zip, this is a windows tool for easy use.

To upgrade the firmware, need some steps:

  1. download the upgrade tool and uncompress to folder, like D:\mpro
  2. open Windows command line tool(search cmd)
  3. in cmd, go to D:\mpro, normally you can do this by two DOS command: d: (enter)then cd mpro_upgrade (enter)
  4. call upgrade application do the upgrade: upgrade firmware.bin(enter)

Thanks to all the users help us do the public test, if you find any bug feel free email to support(a)vocore.io

Screen: 5inch Upgrade to MPRO

After one and half years develop, finally the big upgrade for screen driver comes. This new driver board named MPRO, it has many notable new features.

  1. Startup LOGO
  2. 60FPS at partily draw, 33FPS at full draw(5inch).
  3. Partily draw mode.
  4. I2C external device(for LEDs and buttons).
  5. USB Type-C connection
  6. More current for screen backlight.
  7. OLED, round or strip shape screen support.
  8. Interface compatible with V7B version.
  9. support HMI like features.

PS: This upgrade mainly focuses on supporting more different types of screens, such as bigger screens, special shape screens, and high resolution screens. Without USB TypeC, the rest of the features are almost the same as the current V7B version. For example, for dashboard usage, nobody can find out the difference between 30FPS and 60FPS without a special exam device.

MPRO 5inch samples are open to order for public test, please email us sales(at)vocore.io for MPRO, its mass production version is same price as current 5inch version.

Explain and some notes about the features:

  • MPRO driver board size is 25.6mm x 15mm, it is 1mm more on top side than current V7B driver board(25.6mm x 14mm), this size change might effect shell/enclosure design.
  • MPRO screens are not compatible with V7B screens, so they can not replace each other.
  • Startup logo is an embed logo store inside driver board, once power on it will show on the screen.
  • Partily draw mode. We have this because USB2.0 only has limit speed for send pictures to screen, for small screen like our current 4inch, 5inch, it is no problem, but for bigger screen with high resolution like 10inch or more, full draw will low the frame rate a lot. So in order to reach 60FPS, we just modify the changed part on screen.
  • Dither for 16bits, with this feature, 16bits picture looks more smoothly. As I know Simhub already support this, so not very important for now.
  • I2C externel device. We have export I2C and one interrupt input for external buttons and LEDs. So with a simple MCU chip like CH32V003, we can control 512x WS2812B and 7×7=49 matrix buttons by USB through MPRO.
  • More current for screen backlight, means we can support bigger screens, thanks to USB TypeC, it can stand much more current than microUSB.
  • Interface compatible with V7B version. For MPRO version, we still have four USB test point at back of driver board which can also be used as SMT mount point. Also we have three more exported, I2C CLK, I2C DAT, I2C INT, so for developers can simply use them for external LEDs and buttons, do not need additonal Arduino and USBHub anymore.
  • For public test stage, I2C feature is still under develop and test, it will be release later by upgrade firmware.
  • V7B version 4inch and 4.3inch will update and replace at Mar.2024 or later if current 5inch test is good. Old version V7B will keep production for exists project, but it might have a longer lead time(6~8 weeks) to reach factory MOQ.
  • 5inch new version is now stable (Jan.1, 2024), V7B version is end of life, do not recommend for new design.

VoCore2: TeraTerm fix brick

For Windows user, a good kermit terminal is not easy to find, we suggest to use TeraTerm.

TeraTerm download link: https://github.com/TeraTermProject/osdn-download/releases

Reference to vocore.io/v2.html or vocore.io/v2u.html, we use TTL to upgrade firmware if the uboot is still alive.

Hardware part, need to connect USB2TTL device RX and TX to VoCore2 TXD2 and RXD2, then we you power on VoCore2, you will able to read something from serial port. Serial port parameter for VoCore2 UART2 is 115200, 8n1.

First, open TeraTerm, select COM5(or COM3, it is kind of random depends on your Windows system)

Second, setup serial port at Setup => Serial Setup

Third, at bootup, select 0 for serial port upgrade firmware.

Then, choose the firmware(it is sysupgrade firmware from openwrt)

ready to choose your firmware.
choose your firmware from TeraTerm menu File => Transfer => Kermit => Send
Now, start transfer the firmware file to VoCore2 memory, it normally takes from 5min to 20min, depends on the firmware size.
After transfer done, VoCore2 will automaticlly write to flash, do not power off VoCore2, or you have to do everything again.

If everything works normal, check the boot up Linux Log, you will see it has upgrade to the new firmware. 🙂

Screen: I2C to Drive RGB LEDs 2

More example code to use I2C on VoCore Screen driver board. These i2c function should be easier to understand and use.

int v2s_i2c_read_reg16(uint8_t addr, uint16_t reg, uint8_t *d, uint8_t size)
{
    uint8_t buf[64] = {0};
    int r;

    if (size > 58)
        return -1;         // required data is too much.

    buf[0] = addr;         // i2c device address
    buf[1] = sizeof(reg);  // write 2 bytes for register.
    buf[2] = size;         // read data size.
    buf[3] = reg >> 8;     // i2c device register high byte.
    buf[4] = reg & 0xff;   // i2c device register low byte.

    // send data to device i2c buffer.
    r = libusb_control_transfer(h, 0x40, 0xb5, 0, 0, buf, 5, 100);
    if (r < 0)
        return r;

    // trigger write to device, must send same device address.
    r = libusb_control_transfer(h, 0xc0, 0xb6, 0, 0, buf, 1, 100);
    if (r < 0)
        return r;

    // trigger read from device, first byte need to be the address.
    r = libusb_control_transfer(h, 0xc0, 0xb7, 0, 0, buf, size + 1, 100);
    if (r < 0)
        return r;

    memcpy(d, buf + 1, size);
    return size;
}

int v2s_i2c_write_reg16(uint8_t addr, uint8_t reg, uint8_t *d, uint8_t size)
{
    uint8_t buf[64] = {0};
    int r;

    if (size > 58)
        return -1;         // required data is too much.

    buf[0] = addr;
    buf[1] = sizeof(reg) + size;  // write 2 bytes for register and rest for data.
    buf[2] = 0;            // read data size.
    buf[3] = reg >> 8;     // i2c device register high byte.
    buf[4] = reg & 0xff;   // i2c device register low byte.

    memcpy(buf + 5, d, size);

    // send data to device i2c buffer.
    r = libusb_control_transfer(h, 0x40, 0xb5, 0, 0, buf, 5 + size, 100);
    if (r < 0)
        return r;

    // trigger write to device, first byte need to be the address.
    r = libusb_control_transfer(h, 0xc0, 0xb6, 0, 0, buf, 1, 100);
    if (r < 0)
        return r;

    return size;
}

Screen: Firmware Upgrade

VoCore Screen normally do not need to modify the firmware and we are not recommend to do that either, because upgrade firmware is pretty risk that possible lock the driver board cause it totally bricked and will not bring any benifit — no speed increase or function change. But sometimes, the driver board have to write firmware again, like in Windows it shows “Unknown device” and VID=04B4&PID=8613. Once this happens, we have to reload the firmware and try to fix it.

For Linux, it is easy to upgrade, download our eeprom upgrade application here: https://vocore.io/misc/eeprom.linux.zip, and run “sudo ./eeprom.u64”, select the correct firmware type which must match the screen type printed on screen back side. It depends on libusb, so need to install libusb first.

For Windows, that is not easy, because Windows do not have common USB driver, we need to install many driver for different VID/PID devices. I think we can use Cypress USB FX2LP tools which from the chip provider to do the work. I will check and try to find some easy way to do it for windows users. Currently you can try to use this one: https://vocore.io/misc/eeprom.win32.zip. Upgrade firmware for a normal VoCore screen will only bring risk to brick it but no benifit, so recommend never use it if not necessary.

When you use eeprom.exe, you can choose the correct firmware from the list. But it will require you install at least two libusb drivers by using zadig, one for 04b4:8613; one for 1004:c872; once installed them, eeprom.exe can work normal. screen_test.exe only need 1004:c872.

install driver by zadig for 04b4:8613 to use eeprom.exe

VoCore2: KiCAD7 Symbol & Module

For easy develop, the VoCore2 3d module and SMT footprint is upgraded to support KiCAD7, have fun 🙂

Consider SMT footprint has better yield rate for mass production, recommend to use this footprint.

Download STEP file at: http://vonger.cn/misc/vocore2/vocore2.3d.stp.zip or https://vocore.io/v2.html

Download Symbol at: http://vonger.cn/misc/vocore2/vocore2.smt.zip or https://vocore.io/v2.html

PS: also we have tape package. Contact us if you need this special package.

VoCore2: Get Chip Internal Temperture

For mediatek wifi driver, we can get the internal temperture by command “iwpriv ra0 stat | grep CurrentTemperature”, for example

root@OpenWrt:~# iwpriv ra0 stat | grep Temp
CurrentTemperature              = 73

For open source wifi driver, we can get temperture by user level driver (need to enable /dev/mem) source code here: https://github.com/Vonger/vocore2/tree/master/utils/mt7628tool