Author Topic: Hack Zortrax Driver board? Port Klipper?  (Read 32468 times)

0 Members and 3 Guests are viewing this topic.

Offline Patrick Areny

  • Regular Contributor
  • *
  • Posts: 58
  • Country: fr
Re: Hack Zortrax Driver board? Port Klipper?
« Reply #25 on: October 21, 2025, 12:41:09 pm »
Guess what? There is no device tree, instead it is a sunxi special way of booting, that is the data looking like a device tree embedded in the uboot ARM binary executable.
So I could dump it to a file because it was surrounded by FFFFFFF like when a flash is erased and not overwritten.
I tryed ./sunxi-fexc on it and it worked  ^-^
It is a FEX binary file, a primitive device tree developed for the Sunxi systems. The binary blob, the thing called script.bin on sunxi systems, is an equivalent of a DTB. There are 2, I do not know which one is the proper one for the Zortrax.

I have:
- FEX device tree
- My more or less working device tree
- And all the partition data with the scripts to set the STM32 in boot mode.
« Last Edit: October 21, 2025, 12:47:00 pm by Patrick Areny »
 

Offline fdgb

  • Newbie
  • Posts: 6
  • Country: it
Re: Hack Zortrax Driver board? Port Klipper?
« Reply #26 on: October 23, 2025, 01:14:46 am »
Interested! I’ve seen the same F103VE + LV8729 combo on an OG M200—pin headers for LCD/serial look identical. I’d first hook up an ST-Link over SWD and check the RDP level; if it’s open, just dump the firmware and skip power-glitching. Could you share a clear photo of the board’s backside, especially around the driver shunt resistors? I can help trace and sanity-check current limits (2A sounds in the right ballpark). >:D
 

Offline Patrick Areny

  • Regular Contributor
  • *
  • Posts: 58
  • Country: fr
Re: Hack Zortrax Driver board? Port Klipper?
« Reply #27 on: October 23, 2025, 11:54:24 pm »
What is an an OG M200?
What backside photo do you want, the MCU or the SBC one? To what purpose?

Another way of getting the MCU firmware would be to write something in the original update script. The Zortrax uses a shell script during the update and everything is stored in /tmp. It is a ramdisk and therefore no update file is left permanently on the EMMC. But adding a ```cp $DOWNLOADED_UPDATE_FILE /``` in the script would store the update file on the system disk root directory during the next update.
And then, I look what that file is.




« Last Edit: October 24, 2025, 12:20:30 am by Patrick Areny »
 

Offline Patrick Areny

  • Regular Contributor
  • *
  • Posts: 58
  • Country: fr
Re: Hack Zortrax Driver board? Port Klipper?
« Reply #28 on: October 23, 2025, 11:57:09 pm »
I just booted Armbian (kernel 6) on the Zortrax from a usb stick  8) !!!
But this was not obvious, translating the fex file into a dts is rough. Plus the USB0 port crashes the machine for now, I had to disable it. So I am not done.
Maybe I could eventually boot my 3.4 linux from the EMMC using the Zortrax ZImage, instead of android and just dump the device tree transmitted from the Zortrax U-boot. Edit: this seems not to be possible if a script.bin was used instead of a device tree. Script.bin are use in what is called legacy kernels an are not compatible with mainline kernel.
But for now I have to dump the EMMC a second time to the USB storage using Linux instead of my serial port trick and compare to what I have already. Just in case.
« Last Edit: October 24, 2025, 12:17:57 am by Patrick Areny »
 

Offline Patrick Areny

  • Regular Contributor
  • *
  • Posts: 58
  • Country: fr
Re: Hack Zortrax Driver board? Port Klipper?
« Reply #29 on: October 24, 2025, 05:42:20 pm »
I bough a battered Zortrax M200 today. To experiment without breaking my "near new" one. And the SBC board is not exactly the same (Rev 1.1 instead of rev 2.1), it seems to be the same A33 SOM, but it has Wifi on SDIO0 (AP6210-AMPAK) and ethernet on USB1 (Realtek RTL8152B). USB0 is the front connector.
Version 2.1 has the USB Realtek ethernet chip near the RJ45 connector while the Rev1.1 has it on board with a long 8 wire ribbon cable to the RJ45 connector. The Version 2.1 puts a USB2.0 hub in between to add a port where we plug the Wifi dongle. A connector is free on the hub for a USB camera or whatever we put there.

I managed to dump the emmc of my first test board from a linux booted from usb to an ext4 partition on the same usb storage.
I have access to the EMMC partitions from Armbian, and therefore I can change the update script to retrieve an update file. If it is possible to restore the printer, why not? But Zortrax says that flashing the MCU erases the serial number so it should end here for the Zortrax software.

« Last Edit: October 26, 2025, 01:19:52 pm by Patrick Areny »
 

Offline Patrick Areny

  • Regular Contributor
  • *
  • Posts: 58
  • Country: fr
Re: Hack Zortrax Driver board? Port Klipper?
« Reply #30 on: October 26, 2025, 01:04:54 pm »
Booting on the Rev 1.1 board is not that obvious, because it has only one USB0 port (the one crashing uboot but used in FEL mode to load uboot), the other port is reserved for the ethernet chip. I managed to boot with USB0 in the device tree, it took me the morning. Next step would be to boot on that port. Edit: the usb0 vbus is unpowered in uboot, only powered on during the Zortrax linux kernel start sequence.

And "ça va de soi", but it would be nice to plug a USB hub in the port, to get extensions to Klipper. Notably the accelerometer and his friends.
« Last Edit: October 28, 2025, 10:14:39 pm by Patrick Areny »
 

Offline Patrick Areny

  • Regular Contributor
  • *
  • Posts: 58
  • Country: fr
Re: Hack Zortrax Driver board? Port Klipper?
« Reply #31 on: October 28, 2025, 04:56:01 pm »
On my first try on a complete machine, I noticed that the uart of the console and the other one for the MCU are mixed together if not properly configured. This make the console inoperable. I managed t fix that problem in the device tree, and finally managed to log in Armbian and dump a disk image of my first m200+ (I cannot boot Armbian on the Rev1.1 for now because of difficulties setting up USB0).
From Armbian I mounted the zortrax system partition and changed the zortrax update script to store the temporary update.tar on the emmc. However, as the printer was always asking for an update, now, it declares being up to date.

I notice now that the Marlin port is for the M200 and M300, not the plus versions  ::).

USBO the OTG port does not work with the kernel I am using. It hangs waiting for the phy (if not u-boot already crashed because of it). I do not know if I would have to dig into the driver, the AXP233 or what. Maybe it is this fishy PH1 port connected by a strap wire to USB-ID pin.
I will stop for a week, for the moment I will just unsolder the ethernet chip on Rev1 and connect a usb hub on USB1. Rev2 allows a workaround because it exposes USB1 and uses a hub inside where we can redirect the other USB connector by using a 2 male 2hp 4pin cable.
« Last Edit: October 28, 2025, 10:18:39 pm by Patrick Areny »
 

Offline Patrick Areny

  • Regular Contributor
  • *
  • Posts: 58
  • Country: fr
Re: Hack Zortrax Driver board? Port Klipper?
« Reply #32 on: November 12, 2025, 10:39:58 am »
I am working on an Armbian image for the emmc, it is less interesting than "breaking in" and there is some work to do in order to get the bootloader starting on the EMMC.
Currently working on the Rev1.1, I cut the USB1 traces to the RTL8521 ethernet chip and soldered a cable to a USB hub.
I ordered a ethernet adapter over usb to replace the RTL8521 I cut out.
I have also ordered a couple cables and a cheap USB2.0 hub of same type as the Zortrax one to add to the REV2.1 board. The Rev2.1 board is easier to work with because it has less stuff on the PCB and more on the USB. USB may cause reliability issues.

Edit: another path to a working Linux would be to keep the current bootloader and his fex file, as wel as the 3.4 Linux zImage and boot a compatible root file system instead of Android from this. But we dot not get the device tree source, and we are stuck on a Linux 3.4 kernel while I am booting 6 with the other method but lacking USB0, LCD, wifi support for now.
So it would be taking an Armbian legacy image (the other name for 3.4 Edit: nope, it is a 5 or 6 kernel), keeping the bootloader and his embeded fex data, keeping the drivers module files and the zImage. And mixing all this into a working image.

Any thoughts on keeping Linux 3.4?
« Last Edit: January 28, 2026, 12:14:21 am by Patrick Areny »
 

Offline Patrick Areny

  • Regular Contributor
  • *
  • Posts: 58
  • Country: fr
Re: Hack Zortrax Driver board? Port Klipper?
« Reply #33 on: November 14, 2025, 12:19:38 pm »
I continue my monolog.
It turns out that the Zortrax bootloader in the protected zone mmcblk2boot0 is extremely old (boot0 version : 3.1.0  2014) and of unknown repository. And I cannot find a way to make it boot a recent mainline u-boot.
I replaced it on a board and bricked the board given that the FEL mode is on mmcblk2boot0 and the u-boot-sunxi-with-spl.bin does not revert to FEL mode and crashes not finding the emmc.
I will solder a SDcard adapter with SDIO on the free SD0 pins and I should be able to boot linux from the sd card and recover the brick. Then try to update mmcblk2boot0 with a newer one like from Olimex.

The biggest problem is to start u-boot proper on this board, because the old SPL in mmcblk2boot0 refuses to load it from sector 16, it seems to go directly to a old (2011) u-boot binary further away because replacing the SPL at sector 16 does nothing to the boot process.
I kept the original Zortrax partition table and configured it such as I have an ext4 partition with Armbian booting in place of the Android fat32 partition.
This works but, the only way I have for now to load my u-boot is to chainload it from the old sunxi one but when I do that, I do not have EMMC detection, only USB access. So still using FEL mode to load the kernel from the EMMC.
If this u-boot emmc problem is solved, it will be possible to replace the original firmware with Armbian.

« Last Edit: January 28, 2026, 12:15:38 am by Patrick Areny »
 

Offline Patrick Areny

  • Regular Contributor
  • *
  • Posts: 58
  • Country: fr
Re: Hack Zortrax Driver board? Port Klipper?
« Reply #34 on: November 14, 2025, 09:25:47 pm »
I deleted the Android partition a few days ago. And today during my tests, I booted android anyway, strangelly it entered some android screen with apps and shit. And restored the android partition (automatically overwriting over Armbian in the background) and asked for a zortrax update...
I could nearly activate Android debug from the touch screen but it rebooted, I bet that there is plenty of time to activate it. But I am not interested in that.

And there is a solution to have a booting Armbian on the emmc without using FEL boot!  ;D
Chainload mainline u-boot from sunxi boot, load the zimage from the USB and call bootz with the emmc mmcblk2p1 as rootfs. The kernel zImage must be loaded form the USB because the chainloaded u-boot cannot initialise or read the emmc. I tried all the day, emmc works when loading u-boot using sunxi-fel but not when chainloading. Probably because the eGON primary loader is not called to initialise the RAM again.

Later, if I can unbrick my other board, I will recover a more recent sunxi mmcblk boot0 from some orange pi or some Olimex sd card image and try it on the Zortrax.
 
But from my first posts and even from the other boards configuration, I would have not expected that it would be so convoluted.
« Last Edit: November 15, 2025, 05:21:13 pm by Patrick Areny »
 

Offline Patrick Areny

  • Regular Contributor
  • *
  • Posts: 58
  • Country: fr
Re: Hack Zortrax Driver board? Port Klipper?
« Reply #35 on: November 15, 2025, 05:38:07 pm »
We can boot over USB and put the linux rootfs also on the USB without changing much the emmc image, only the u-boot files in the FAT16 part and a line change in the sunxi u-boot env part.
The only problem would be taking bandwidth on the USB if we use things like a camera, a wifi dongle, or a USB extruder board. But if it is possible to revert back to the original Zortrax m200 plus, it would be easier this way.
The speed is nearly the same: 40MB/s for USB2, 50MB/s for the emmc.
Does anyone have a preference between the two?

I receive a USB ethernet port on monday, and some longer 2HP 10pin cables to keep the linux board outside of the case. I will start installing Klipper.
« Last Edit: November 15, 2025, 09:03:34 pm by Patrick Areny »
 

Offline Patrick Areny

  • Regular Contributor
  • *
  • Posts: 58
  • Country: fr
Re: Hack Zortrax Driver board? Port Klipper?
« Reply #36 on: December 03, 2025, 02:55:10 pm »
I boot Armbian on my zortrax without touching a keyboard  ;D And with minimal emmc modification.
I installed klipper, and started to configure the zortrax starting from rpanfili SK200 mod configuration.
Now, I am struggling to get the TFT LCD working. It is not a mainline LCD driver. Some sunxi driver sources are available.

 

Offline harryzTopic starter

  • Contributor
  • Posts: 27
  • Country: se
Re: Hack Zortrax Driver board? Port Klipper?
« Reply #37 on: December 06, 2025, 05:16:56 am »
Hi.
So sorry, I have not been paying attention to the project for a while - super busy with work. Hell yeah, you got some nice progress and I'm still interested.
First thing's first - would you like colab to git?

Quote
Can anyone confirm if M300 dual, M200+ and OG M200 has same board?
- yes, the kinematics boards change versions and firmware, have ton of small addon boards as you probably noticed, but in general and by pinout M200, M300, M200+ and M300+ have same boards minus non + will not have Allwinner board and will use kinematics processor as main CPU and draw menu on trashy little LCD. taht loses rows after some years.
 
I have some experience with designing Allwinner boards, I have designed custom A64 board and looked into the product line a bit and, at leas years ago when I worked on that, A33 had zero support for mainline-ish Linux so I kind of dismissed it as viable option.

TBH I do not like the boards, I do not like the routing, I do not like the too few VIAs, too thin traces, weird layout choices all over the place and I do not like very old MCU they chose even for the day. That said - it's capable enough  for hte task and I jsut hate the idea of throwing out working hardware jsut cause bytes inside are not the right ones.

The company IMHO was ruined by single person with attitude and self grandizing issues. The whole thing about scraping off the part numbers - you copied the electronics form 10 different printers before - that IS the reason you are afraid someone will copy form you. They should have just went open source, drop prices little bit and and sell rigs as prosumer ready to print with user hacking options.

And they should never have stopped innovate. 3DP is such a living, morphing, expanding, ever changing sector of super wide user base.. As manufacturer you can not take pause for years and expect to still be on top of things. input shaping came. Bamboo came. Adventurer 5M. Multimats. Multiheads. All the new stuff.

Literally nobody cares to copy their boards. I still plan to dump the MCU OG firmware for archival and principal purposes. But nobody will base their build on it. Reverse the z-code maybe.. even then - why?

On cryptochip - did not check FEL regs / fuse array for A33, but A64, if you would use secure boot, you'd burn key to OTP fuses and unless your boot image is encrypted with same key, it will not boot. I don't thing there is a way to boot them at if the key regs have been touched and you do not have hte key. Hindsight of seeing amount of your posts suggests to me that the CPU has not been bootlocked form FEL though. To the next posts then..
 

Offline harryzTopic starter

  • Contributor
  • Posts: 27
  • Country: se
Re: Hack Zortrax Driver board? Port Klipper?
« Reply #38 on: December 06, 2025, 05:29:03 am »
Quote
I have something looking very much like a device tree at the end of the uboot binary blob (U-Boot 2011.09-rc1), but the format does not seem right, like no 0xD00DFEED magic number.

Yes, well, form my experience allwinner  devicetree differs hugely form kernel to kernel. It could be botched. Also dtb -> dts decompilation was kind of here and there and more there than here as I remember. I don'[t think I could get A64 boot correctly from just decompiled and compiled again DTB

Could you drop the restored image on some google drive or alike - I'd like to take a peek in it.
 

Offline harryzTopic starter

  • Contributor
  • Posts: 27
  • Country: se
Re: Hack Zortrax Driver board? Port Klipper?
« Reply #39 on: December 06, 2025, 05:30:54 am »
Quote
I tryed ./sunxi-fexc on it and it worked  ^-^

Ahh, I totally forgot that exists. It's the old way Sunxi did things, I think they deprecated it jsut about same time I started to work with A64.
 

Offline harryzTopic starter

  • Contributor
  • Posts: 27
  • Country: se
Re: Hack Zortrax Driver board? Port Klipper?
« Reply #40 on: December 06, 2025, 05:36:26 am »
If by Shunts you mean the 1210 resistors in series with filters on the driver outputs - they are all 200mOhm.
 

Offline harryzTopic starter

  • Contributor
  • Posts: 27
  • Country: se
Re: Hack Zortrax Driver board? Port Klipper?
« Reply #41 on: December 06, 2025, 05:48:57 am »
Quote
Any thoughts on keeping Linux 3.4?
It will introduce issues with wahtever else we'd want to run on the thing. Many things are not compatible with < 4.x nowadays. But there has to be a way. Display should be solvable. What interface does it use? Did it have MIPI straight from CPU or was there some in-between format converter?

 

Offline harryzTopic starter

  • Contributor
  • Posts: 27
  • Country: se
Re: Hack Zortrax Driver board? Port Klipper?
« Reply #42 on: December 06, 2025, 05:55:40 am »
Quote
But from my first posts and even from the other boards configuration, I would have not expected that it would be so convoluted.
Allwinner has it's ways with that.

I'd probably swap out the eMMC with hacked in SD card to be able to jsut pull the darn thing  and edit directly.
 

Offline harryzTopic starter

  • Contributor
  • Posts: 27
  • Country: se
Re: Hack Zortrax Driver board? Port Klipper?
« Reply #43 on: December 06, 2025, 05:58:53 am »
Quote
The speed is nearly the same: 40MB/s for USB2, 50MB/s for the emmc.
Does anyone have a preference between the two?

I'd say USB is a nice path to be able to revert, yes.
 

Offline harryzTopic starter

  • Contributor
  • Posts: 27
  • Country: se
Re: Hack Zortrax Driver board? Port Klipper?
« Reply #44 on: December 06, 2025, 06:07:57 am »
Quote
Now, I am struggling to get the TFT LCD working. It is not a mainline LCD driver. Some sunxi driver sources are available.

What kernel are you on?

I can look at what's the difference between OTM8019 and OTM8009 and try to hack the latter to work for ours. Latter is mainlined:
https://github.com/torvalds/linux/blob/master/drivers/gpu/drm/panel/panel-orisetech-otm8009a.c
 

Offline Patrick Areny

  • Regular Contributor
  • *
  • Posts: 58
  • Country: fr
Re: Hack Zortrax Driver board? Port Klipper?
« Reply #45 on: December 06, 2025, 11:22:15 am »
Hello, nice that you catched up with this.

You can FEL mode into it using my u-boot branch: https://github.com/mandraga/u-boot (checkout zortrax-m200plus).

With the zortrax plus board version 2.1, you need a cable without VBUS. And from there, you can boot an Armbian compiled with a lime-A33 board definitions and the device tree from u-boot.
With the zortrax plus board version 1.1, you will boot using fel mode but you have to cut the usb trace to the ethernet chip and connect a hub here in order to boot over USB. Or maybe not if you manage to make the changes to chainload u-boot-dtb.bin from u-boot in fel mode (sunxi uboot env + write the bootloader bin to the emmc). (edit: never mind, the OTG port is disabled under u-boot, hence the wire soldering hack on revision 1.1, and the chainloading process breaks the emmc access, maybe later if we put a new bootloader and Armbian on the EMMC)

Chain-loading u-boot mainline from u-boot sunxi. U-boot mainline is loaded from the available FAT32 partition.
Code: [Select]
fatload mmc 2:2 0x4A000000 u-boot-dtb.bin
go 0x4A000000

I boot in u-boot mainline with something like this:
Code: [Select]
CONFIG_BOOTCOMMAND="setenv bootargs root=/dev/sda2 rootwait console=ttyS0,115200 rw; \
usb start; \
ext4load usb 0:2 0x42000000 boot/zImage; \
ext4load usb 0:1 0x43000000 sun8i-a33-zortrax-m200plus.dtb; \
bootz 0x42000000 - 0x43000000"

A FAT16 partition is available on the emmc to put the boot data like u-boot-dtb.bin:

Code: [Select]
mkdir fat16disk
mount /dev/mmcblk2p2 fat16disk

The sunxi u-bot env is in mmcblk2p5. Get it with:

Code: [Select]
dd if=/dev/mmcblk2p5 of=sunxi_env.img bs=1k count=4
You change the bootdelay to 1 instead of 0 using an hex editor to get the u-boot console.
And with all of this information you are able to run a system from usb and to run the original system from the emmc. Btw, if from sunxi-u-boot you call "run setargs_nand boot_normal" you get android.

At the moment, I am struggling to get the display and the i2c power for the touchscreen running: https://forum.armbian.com/topic/56565-compiling-an-lcd-driver-for-armbian-on-allwinner-a33/#replyForm

I should try the otm8009z.c pannel driver, it seems cleaner that my sunxi kernel sl698ph_720p port.

And except the touch pannel and the LCD, you can boot whatever linux you want. I chose the USB way and if needed, for heavy use, a USB to SSD adapter can be used.
Using klipper seems trivial compared to this if you start form existing repos (Zortrax Marlin and rpanfili SK200 port). I installed and configured klipper and compiled the MCU firmware, but did not test and I concentrated on the screen instead, I though it would be a couple of days and it is 2 weeks now. We will start printing once the screen is working.

« Last Edit: December 06, 2025, 05:34:01 pm by Patrick Areny »
 

Offline Patrick Areny

  • Regular Contributor
  • *
  • Posts: 58
  • Country: fr
Re: Hack Zortrax Driver board? Port Klipper?
« Reply #46 on: December 06, 2025, 11:47:00 am »
Obviously you need some setup with a serial link to do all this. The UART connector is a molex picoblade 2 points.
Here is my setup: https://drive.google.com/file/d/1ojGghGrXima14zAIULppZhxDiUnDAA34/view?usp=sharing
Notice that the GND from my "FEL" usb cable detached from the board, but I do not need the FEL mode boot anymore.

The revision 1.1 printers have only one usb port (the wifi chip is on the board and the ethernet chip is on the board, a ribbon goes to the RJ45 connector).
The revision 2.1 printers have two ports, the wifi chip is on one of the usb ports, the ethernet chip is on a usb2 hub (same chip as on my setup, ie the green board, but Zortrax).

I have a merge request on your repo, it is only documentation.
I use the Armbian_build repo "compile.sh" to create a "lime-A33 current trixie minimal" image, I give the zortrax DTB at boot. My repo for the klipper port is local and full of trial and error stuff. I will clone it on github after some progress, and the u-boot and his device tree is public and updated as given in the previous post. But it is work in progress, I hope to also add the camera.
Basically, someone familiar with embedded linux has everything here to boot linux on the zortrax m200+.

The fex file is also a must have to work on the device tree. It mostly describes everything but the axp223 configuration is weird, it seems to be inconsistent with the kernel logs and what is measured on the board. As instance the ldoio1 is not there. Here is the content of the disassembled data from the boot area:

Code: [Select]
[product]
version = "A33-Tablet"
machine = "U708HC"

[platform]
eraseflag = 1
next_work = 2

[target]
boot_clock = 1008
storage_type = -1
burn_key = 1

[key_detect_en]
keyen_flag = 1

[power_sply]
dcdc1_vol = 3000
dcdc2_vol = 1100
dcdc3_vol = 1200
dcdc4_vol = 0
dcdc5_vol = 1500
aldo2_vol = 2500
aldo3_vol = 3000
eldo1_vol = 1800
dldo2_vol = 1800

[card_boot]
logical_start = 40960
sprite_gpio0 =
next_work = 3

[card0_boot_para]
card_ctrl = 0
card_high_speed = 1
card_line = 4
sdc_d1 = port:PF00<2><1><2><default>
sdc_d0 = port:PF01<2><1><2><default>
sdc_clk = port:PF02<2><1><2><default>
sdc_cmd = port:PF03<2><1><2><default>
sdc_d3 = port:PF04<2><1><2><default>
sdc_d2 = port:PF05<2><1><2><default>

[card2_boot_para]
card_ctrl = 2
card_high_speed = 1
card_line = 4
sdc_2xmode = 1
sdc_clk = port:PC05<3><1><2><default>
sdc_cmd = port:PC06<3><1><2><default>
sdc_d0 = port:PC08<3><1><2><default>
sdc_d1 = port:PC09<3><1><2><default>
sdc_d2 = port:PC10<3><1><2><default>
sdc_d3 = port:PC11<3><1><2><default>

[twi_para]
twi_port = 0
twi_scl = port:PH02<2><default><default><default>
twi_sda = port:PH03<2><default><default><default>

[uart_para]
uart_debug_port = 0
uart_debug_tx = port:PF02<3><1><default><default>
uart_debug_rx = port:PF04<3><1><default><default>

[force_uart_para]
force_uart_port = 0
force_uart_tx = port:PF02<3><1><default><default>
force_uart_rx = port:PF04<3><1><default><default>

[jtag_para]
jtag_enable = 0
jtag_ms = port:PF00<3><default><default><default>
jtag_ck = port:PF05<3><default><default><default>
jtag_do = port:PF03<3><default><default><default>
jtag_di = port:PF01<3><default><default><default>

[clock]
pll3 = 297
pll4 = 300
pll6 = 600
pll8 = 408
pll9 = 480
pll10 = 297
pll_cpupat = 0
pll_gpupat = 0xc440e666
pll_videopat = 0
pll_vepat = 0
pll_hsicpat = 0
pll_depat = 0
pll_mipipat = 0
pll_mipitun = 0x8a002008
pll_mipibias = 0xf8100400

[pm_para]
standby_mode = 1

[dram_para]
dram_clk = 552
dram_type = 3
dram_zq = 0x3bbb
dram_odt_en = 1
dram_para1 = 284295680
dram_para2 = 0
dram_mr0 = 6208
dram_mr1 = 64
dram_mr2 = 8
dram_mr3 = 0
dram_tpr0 = 0x48a192
dram_tpr1 = 0x1b1b18d
dram_tpr2 = 0x76052
dram_tpr3 = 0x0
dram_tpr4 = 0x0
dram_tpr5 = 0x0
dram_tpr6 = 0x0
dram_tpr7 = 0x0
dram_tpr8 = 0x0
dram_tpr9 = 0x0
dram_tpr10 = 0x0
dram_tpr11 = 0x0
dram_tpr12 = 0xa8
dram_tpr13 = 0x10900

[pm_para]
standby_mode = 1

[wakeup_src_para]
cpu_en = 0
cpu_freq = 48
pll_ratio = 273
dram_selfresh_en = 1
dram_freq = 36
wakeup_src_wl = port:PL07<4><default><default><0>
wakeup_src_bt = port:PL09<4><default><default><0>

[twi0]
twi_used = 1
twi_scl = port:PH02<2><default><default><default>
twi_sda = port:PH03<2><default><default><default>

[twi1]
twi_used = 1
twi_scl = port:PH04<2><default><default><default>
twi_sda = port:PH05<2><default><default><default>

[twi2]
twi_used = 1
twi_scl = port:PE12<3><default><default><default>
twi_sda = port:PE13<3><default><default><default>

[uart0]
uart_used = 1
uart_port = 0
uart_type = 2
uart_tx = port:PF02<3><1><default><default>
uart_rx = port:PF04<3><1><default><default>

[uart1]
uart_used = 1
uart_port = 1
uart_type = 4
uart_tx = port:PG06<2><1><default><default>
uart_rx = port:PG07<2><1><default><default>
uart_rts = port:PG08<2><1><default><default>
uart_cts = port:PG09<2><1><default><default>

[uart2]
uart_used = 1
uart_type = 2
uart_tx = port:PB00<2><1><default><default>
uart_rx = port:PB01<2><1><default><default>

[uart3]
uart_used = 1
uart_type = 2
uart_tx = port:PH06<3><1><default><default>
uart_rx = port:PH07<3><1><default><default>

[uart4]
uart_used = 0
uart_port = 4
uart_type = 2
uart_tx = port:PA04<2><1><default><default>
uart_rx = port:PA05<2><1><default><default>
uart_rts = port:PA06<2><1><default><default>
uart_cts = port:PA07<2><1><default><default>

[spi0]
spi_used = 0
spi_cs_bitmap = 1
spi_mosi = port:PC00<3><default><default><default>
spi_miso = port:PC01<3><default><default><default>
spi_sclk = port:PC02<3><default><default><default>
spi_cs0 = port:PC03<3><1><default><default>

[spi1]
spi_used = 0
spi_cs_bitmap = 1
spi_cs0 = port:PA00<2><1><default><default>
spi_sclk = port:PA01<2><default><default><default>
spi_mosi = port:PA02<2><default><default><default>
spi_miso = port:PA03<2><default><default><default>

[spi_devices]
spi_dev_num = 1

[spi_board0]
modalias = "at25df641"
max_speed_hz = 50000000
bus_num = 0
chip_select = 0
mode = 0

[ctp_para]
ctp_used = 1
ctp_name = "ft5x_ts"
ctp_twi_id = 0
ctp_twi_addr = 0x38
ctp_screen_max_x = 480
ctp_screen_max_y = 800
ctp_revert_x_flag = 0
ctp_revert_y_flag = 1
ctp_exchange_x_y_flag = 0
ctp_int_port = port:PB05<4><default><default><default>
ctp_wakeup = port:PG10<1><default><default><1>

[ctp_list_para]
ctp_det_used = 0
ft5x_ts = 1
gt82x = 1
gslX680 = 1
gslX680new = 0
gt9xx_ts = 1
gt9xxf_ts = 0
tu_ts = 0
gt818_ts = 1
zet622x = 1
aw5306_ts = 1
icn83xx_ts = 0

[tkey_para]
tkey_used = 0
tkey_twi_id =
tkey_twi_addr =
tkey_int =

[motor_para]
motor_used = 0
motor_shake = port:power3<1><default><default><1>
motor_ldo = ""
motor_ldo_voltage = 3300

[ths_para]
ths_used = 1
ths_trip1_count = 3
ths_trip1_0 = 75
ths_trip1_1 = 90
ths_trip1_2 = 110
ths_trip1_0_min = 0
ths_trip1_0_max = 1
ths_trip1_1_min = 1
ths_trip1_1_max = 3
ths_trip1_2_min = 0
ths_trip1_2_max = 0

[cooler_table]
cooler_count = 4
cooler0 = "1344000 4 4294967295 0"
cooler1 = "1200000 4 4294967295 0"
cooler2 = "1008000 4 4294967295 0"
cooler3 = "648000 4 4294967295 0"

[nand0_para]
nand_support_2ch = 0
nand0_used = 1
nand0_we = port:PC00<2><default><2><default>
nand0_ale = port:PC01<2><default><2><default>
nand0_cle = port:PC02<2><default><2><default>
nand0_ce1 = port:PC03<2><default><2><default>
nand0_ce0 = port:PC04<2><default><2><default>
nand0_nre = port:PC05<2><default><2><default>
nand0_rb0 = port:PC06<2><default><2><default>
nand0_rb1 = port:PC07<2><default><2><default>
nand0_d0 = port:PC08<2><default><2><default>
nand0_d1 = port:PC09<2><default><2><default>
nand0_d2 = port:PC10<2><default><2><default>
nand0_d3 = port:PC11<2><default><2><default>
nand0_d4 = port:PC12<2><default><2><default>
nand0_d5 = port:PC13<2><default><2><default>
nand0_d6 = port:PC14<2><default><2><default>
nand0_d7 = port:PC15<2><default><2><default>
nand0_ndqs = port:PC16<2><default><2><default>
nand0_ce2 = port:PC17<2><default><2><default>
nand0_ce3 = port:PC18<2><default><2><default>
id_number_ctl = 2
nand_p1 = 131094

[disp_init]
disp_init_enable = 1
disp_mode = 0
screen0_output_type = 1
screen0_output_mode = 4
screen1_output_type = 1
screen1_output_mode = 4
fb0_format = 10
fb0_pixel_sequence = 0
fb0_scaler_mode_enable = 0
fb0_width = 0
fb0_height = 0
fb1_format = 10
fb1_pixel_sequence = 0
fb1_scaler_mode_enable = 0
fb1_width = 0
fb1_height = 0
lcd0_backlight = 197
lcd1_backlight = 197
lcd0_bright = 50
lcd0_contrast = 50
lcd0_saturation = 57
lcd0_hue = 50
lcd1_bright = 50
lcd1_contrast = 50
lcd1_saturation = 57
lcd1_hue = 50

[lcd0_para]
lcd_used = 1
lcd_driver_name = "sl698ph_720p"
lcd_if = 4
lcd_x = 480
lcd_y = 800
lcd_width = 51
lcd_height = 86
lcd_dclk_freq = 31
lcd_pwm_used = 1
lcd_pwm_ch = 0
lcd_pwm_freq = 50000
lcd_pwm_pol = 1
lcd_hbp = 44
lcd_ht = 575
lcd_hspw = 6
lcd_vbp = 16
lcd_vt = 896
lcd_vspw = 1
lcd_dsi_if = 0
lcd_dsi_lane = 2
lcd_dsi_format = 0
lcd_dsi_eotp = 0
lcd_dsi_vc = 0
lcd_dsi_te = 0
lcd_frm = 1
lcd_gamma_en = 0
lcd_bright_curve_en = 0
lcd_cmap_en = 0
deu_mode = 0
lcdgamma4iep = 22
smart_color = 90
lcd_bl_en = port:PB06<1><0><default><1>
lcd_power = "axp22_dc1sw"
lcd_power1 = "axp22_eldo2"
lcd_gpio_0 = port:PH09<1><0><default><0>

[pwm0_para]
pwm_used = 1
pwm_positive = port:PH00<2><0><default><default>

[pwm1_para]
pwm_used = 0
pwm_positive = port:PH00<2><0><default><default>

[csi0]
vip_used = 1
vip_mode = 0
vip_dev_qty = 1
vip_define_sensor_list = 1
vip_csi_pck = port:PE00<2><default><default><default>
vip_csi_mck = port:PE01<2><default><default><default>
vip_csi_hsync = port:PE02<2><default><default><default>
vip_csi_vsync = port:PE03<2><default><default><default>
vip_csi_d0 = port:PE04<2><default><default><default>
vip_csi_d1 = port:PE05<2><default><default><default>
vip_csi_d2 = port:PE06<2><default><default><default>
vip_csi_d3 = port:PE07<2><default><default><default>
vip_csi_d4 = port:PE08<2><default><default><default>
vip_csi_d5 = port:PE09<2><default><default><default>
vip_csi_d6 = port:PE10<2><default><default><default>
vip_csi_d7 = port:PE11<2><default><default><default>
vip_dev0_mname = "gc2145"
vip_dev0_pos = "rear"
vip_dev0_lane = 1
vip_dev0_twi_id = 1
vip_dev0_twi_addr = 120
vip_dev0_isp_used = 0
vip_dev0_fmt = 0
vip_dev0_stby_mode = 0
vip_dev0_vflip = 0
vip_dev0_hflip = 0
vip_dev0_iovdd = "axp22_dldo3"
vip_dev0_iovdd_vol = 2800000
vip_dev0_avdd = ""
vip_dev0_avdd_vol =
vip_dev0_dvdd = ""
vip_dev0_dvdd_vol = 1500000
vip_dev0_afvdd =
vip_dev0_afvdd_vol =
vip_dev0_power_en =
vip_dev0_reset = port:PE14<1><default><default><0>
vip_dev0_pwdn = port:PE15<1><default><default><1>
vip_dev0_flash_en =
vip_dev0_flash_mode =
vip_dev0_af_pwdn =
vip_dev1_mname = "gc0308"
vip_dev1_pos = "front"
vip_dev1_lane = 1
vip_dev1_twi_id = 2
vip_dev1_twi_addr = 66
vip_dev1_isp_used = 0
vip_dev1_fmt = 0
vip_dev1_stby_mode = 1
vip_dev1_vflip = 0
vip_dev1_hflip = 0
vip_dev1_iovdd = "axp22_dldo3"
vip_dev1_iovdd_vol = 2800000
vip_dev1_avdd = "axp22_ldoio0"
vip_dev1_avdd_vol = 2800000
vip_dev1_dvdd = "axp22_eldo2"
vip_dev1_dvdd_vol = 1800000
vip_dev1_afvdd = "axp22_eldo3"
vip_dev1_afvdd_vol = 2800000
vip_dev1_power_en =
vip_dev1_reset = port:PE16<1><default><default><0>
vip_dev1_pwdn = port:PE15<1><default><default><1>
vip_dev1_flash_en =
vip_dev1_flash_mode =
vip_dev1_af_pwdn =

[mmc0_para]
sdc_used = 1
sdc_detmode = 2
sdc_buswidth = 4
sdc_d1 = port:PF00<2><1><2><default>
sdc_d0 = port:PF01<2><1><2><default>
sdc_clk = port:PF02<2><1><2><default>
sdc_cmd = port:PF03<2><1><2><default>
sdc_d3 = port:PF04<2><1><2><default>
sdc_d2 = port:PF05<2><1><2><default>
sdc_det = port:PB04<4><1><2><default>
sdc_power_supply = "axp22_dcdc1"
sdc_use_wp = 0
sdc_wp =
sdc_isio = 0
sdc_regulator = "none"

[mmc1_para]
sdc_used = 1
sdc_detmode = 4
sdc_buswidth = 4
sdc_clk = port:PG00<2><1><1><default>
sdc_cmd = port:PG01<2><1><1><default>
sdc_d0 = port:PG02<2><1><1><default>
sdc_d1 = port:PG03<2><1><1><default>
sdc_d2 = port:PG04<2><1><1><default>
sdc_d3 = port:PG05<2><1><1><default>
sdc_det =
sdc_use_wp = 0
sdc_wp =
sdc_isio = 1
sdc_regulator = "none"

[mmc2_para]
sdc_used = 0
sdc_detmode = 3
sdc_buswidth = 8
sdc_2xmode = 1
sdc_clk = port:PC05<3><1><2><default>
sdc_cmd = port:PC06<3><1><2><default>
sdc_d0 = port:PC08<3><1><2><default>
sdc_d1 = port:PC09<3><1><2><default>
sdc_d2 = port:PC10<3><1><2><default>
sdc_d3 = port:PC11<3><1><2><default>
sdc_d4 = port:PC12<3><1><2><default>
sdc_d5 = port:PC13<3><1><2><default>
sdc_d6 = port:PC14<3><1><2><default>
sdc_d7 = port:PC15<3><1><2><default>
emmc_rst = port:PC16<3><1><2><default>
sdc_power_supply = "axp22_dcdc1"
sdc_det =
sdc_use_wp = 0
sdc_wp =
sdc_isio = 0
sdc_regulator = "none"

[usbc0]
usb_used = 1
usb_port_type = 2
usb_detect_type = 1
usb_id_gpio = port:PH08<0><1><default><default>
usb_det_vbus_gpio = "axp_ctrl"
usb_drv_vbus_gpio = port:power4<1><0><default><0>
usb_restrict_gpio =
usb_host_init_state = 0
usb_restric_flag = 0
usb_restric_voltage = 3550000
usb_restric_capacity = 5
usb_regulator_io = "nocare"
usb_regulator_vol = 0
usb_regulator_id_vbus = "axp22_dcdc1"
usb_regulator_id_vbus_vol = 3000000

[usbc1]
usb_used = 1
usb_drv_vbus_gpio =
usb_restrict_gpio =
usb_host_init_state = 1
usb_restric_flag = 0
usb_regulator_io = "nocare"
usb_regulator_vol = 0
usb_not_suspend = 0

[usb_feature]
vendor_id = 7994
mass_storage_id = 4096
adb_id = 4097
manufacturer_name = "USB Developer"
product_name = "Android"
serial_number = "20080411"

[msc_feature]
vendor_name = "USB 2.0"
product_name = "USB Flash Driver"
release = 100
luns = 2

[serial_feature]
serial_unique = 1
sn_filename = "sn.txt"

[gsensor_para]
gsensor_used = 0
gsensor_twi_id = 1
gsensor_twi_addr = 0x18
gsensor_int1 =
gsensor_int2 =

[gsensor_list_para]
gsensor_det_used = 0
bma250 = 1
stk831x = 0
mma8452 = 1
mma7660 = 1
mma865x = 1
mc32x0 = 0
afa750 = 1
lis3de_acc = 1
lis3dh_acc = 1
kxtik = 1
dmard10 = 0
dmard06 = 1
mxc622x = 1
fxos8700 = 1
lsm303d = 1

[rf_para]
module_num = 3
module_power1 = "axp22_dldo1"
module_power1_vol = 3300000
module_power2 = ""
module_power2_vol =
module_power3 = ""
module_power3_vol =
power_switch = port:power0<1><0><default><0>
chip_en =
lpo_use_apclk = ""

[wifi_para]
wifi_used = 1
wifi_sdc_id = 1
wifi_usbc_id = 1
wifi_usbc_type = 1
wifi_mod_sel = 3
wifi_power = "axp22_dldo1"
wifi_power_ext1 = ""
wifi_power_ext2 = ""
ap6xxx_wl_regon = port:PL06<1><default><default><0>
ap6xxx_wl_host_wake = port:PL07<4><default><default><0>
ap6xxx_bt_regon = port:PL08<1><default><default><0>
ap6xxx_bt_wake = port:PL10<1><default><default><0>
ap6xxx_bt_host_wake = port:PL09<4><default><default><0>
ap6xxx_lpo_use_apclk = 0
usb_net_power_ctrl = port:PL11<1><default><default><0>

[bt_para]
bt_used = 0
bt_uart_id = 1
bt_rst_n = port:PL08<1><default><default><0>
bt_wake = port:PL10<1><default><default><0>
bt_host_wake = port:PL09<4><default><default><0>
bt_wake_invert = 0
bt_host_wake_invert = 0

[3g_para]
3g_used = 0
3g_usbc_num = 1
3g_uart_num = 2
bb_name = "em66"
bb_vbat =
bb_on =
bb_pwr_on = port:PL03<1><default><default><0>
bb_wake = port:PL04<1><default><default><0>
bb_rf_dis = port:PL11<1><default><default><0>
bb_rst = port:PL05<1><default><default><0>
bb_dldo = "axp22_aldo1"
bb_dldo_min_uV = 2800000
bb_dldo_max_uV = 2800000

[gy_para]
gy_used = 0
gy_twi_id = 1
gy_twi_addr = 106
gy_int1 =
gy_int2 =

[gy_list_para]
gy_det_used = 0
l3gd20_gyr = 1

[ls_para]
ls_used = 0
ls_twi_id = 1
ls_twi_addr = 35
ls_int = port:PB07<4><1><default><default>

[ls_list_para]
ls_det_used = 0
ltr_501als = 0
jsa1212 = 0

[compass_para]
compass_used = 0
compass_twi_id = 1
compass_twi_addr = 13
compass_int =

[gpio_para]
gpio_used = 1
gpio_pin_1 = port:PB02<1><default><default><0>
gpio_pin_2 = port:PB03<1><default><default><0>
gpio_pin_3 = port:PE17<1><default><default><1>
gpio_pin_4 = port:PH01<1><default><default><0>
gpio_pin_5 = port:PC01<1><default><default><0>
gpio_pin_6 = port:PC00<1><default><default><0>
gpio_pin_7 = port:PC02<1><default><default><1>
gpio_pin_8 = port:PC03<0><1><default><0>
gpio_pin_9 = port:PF01<1><default><default><0>
gpio_pin_10 = port:PF00<1><default><default><0>

[i2s0]
i2s0_used = 0
i2s0_channel = 2
i2s0_master = 4
i2s0_select = 1
audio_format = 1
signal_inversion = 1
over_sample_rate = 512
sample_resolution = 16
word_select_size = 32
pcm_sync_period = 256
msb_lsb_first = 0
sign_extend = 0
slot_index = 0
slot_width = 16
frame_width = 1
tx_data_mode = 1
rx_data_mode = 1
i2s0_mclk =
i2s0_bclk = port:PB04<2><1><default><default>
i2s0_lrclk = port:PB05<2><1><default><default>
i2s0_dout0 = port:PB06<2><1><default><default>
i2s0_dout1 =
i2s0_dout2 =
i2s0_dout3 =
i2s0_din = port:PB07<2><1><default><default>

[i2s1]
i2s1_used = 0
i2s1_channel = 2
i2s1_master = 4
i2s1_select = 1
audio_format = 1
signal_inversion = 1
over_sample_rate = 512
sample_resolution = 16
word_select_size = 32
pcm_sync_period = 64
msb_lsb_first = 0
sign_extend = 0
slot_index = 0
slot_width = 16
frame_width = 1
tx_data_mode = 0
rx_data_mode = 0
i2s1_mclk =
i2s1_bclk = port:PG11<2><1><default><default>
i2s1_lrclk = port:PG10<2><1><default><default>
i2s1_dout = port:PG12<2><1><default><default>
i2s1_din = port:PG13<2><1><default><default>

[audio0]
audio_used = 0
headphone_vol = 59
earpiece_vol = 59
cap_vol = 5
pa_single_vol = 62
pa_double_used = 0
pa_double_vol = 62
headphone_direct_used = 1
headset_mic_vol = 3
main_mic_vol = 1
audio_hp_ldo = "none"
audio_pa_ctrl = port:PL02<1><default><default><0>
aif2_used = 0
aif3_used = 0
headphone_mute_used = 0
DAC_VOL_CTRL_SPK = 41120
DAC_VOL_CTRL_HEADPHONE = 41120
agc_used = 0
drc_used = 0

[pmu1_para]
pmu_used = 1
pmu_twi_addr = 52
pmu_twi_id = 1
pmu_irq_id = 0
pmu_battery_rdc = 112
pmu_battery_cap = 2510
pmu_batdeten = 1
pmu_chg_ic_temp = 0
pmu_runtime_chgcur = 500
pmu_earlysuspend_chgcur = 1200
pmu_suspend_chgcur = 1300
pmu_shutdown_chgcur = 1300
pmu_init_chgvol = 4200
pmu_init_chgend_rate = 15
pmu_init_chg_enabled = 1
pmu_init_adc_freq = 800
pmu_init_adcts_freq = 800
pmu_init_chg_pretime = 70
pmu_init_chg_csttime = 720
pmu_batt_cap_correct = 1
pmu_bat_regu_en = 0
pmu_bat_para1 = 0
pmu_bat_para2 = 0
pmu_bat_para3 = 0
pmu_bat_para4 = 0
pmu_bat_para5 = 0
pmu_bat_para6 = 0
pmu_bat_para7 = 0
pmu_bat_para8 = 0
pmu_bat_para9 = 1
pmu_bat_para10 = 1
pmu_bat_para11 = 2
pmu_bat_para12 = 2
pmu_bat_para13 = 3
pmu_bat_para14 = 9
pmu_bat_para15 = 16
pmu_bat_para16 = 24
pmu_bat_para17 = 29
pmu_bat_para18 = 37
pmu_bat_para19 = 43
pmu_bat_para20 = 48
pmu_bat_para21 = 53
pmu_bat_para22 = 57
pmu_bat_para23 = 64
pmu_bat_para24 = 72
pmu_bat_para25 = 81
pmu_bat_para26 = 84
pmu_bat_para27 = 88
pmu_bat_para28 = 93
pmu_bat_para29 = 95
pmu_bat_para30 = 97
pmu_bat_para31 = 99
pmu_bat_para32 = 100
pmu_usbvol_limit = 0
pmu_usbcur_limit = 0
pmu_usbvol = 4000
pmu_usbcur = 0
pmu_usbvol_pc = 4400
pmu_usbcur_pc = 500
pmu_pwroff_vol = 3300
pmu_pwron_vol = 2600
pmu_pekoff_time = 6000
pmu_pekoff_func = 0
pmu_pekoff_en = 1
pmu_peklong_time = 1500
pmu_pekon_time = 1000
pmu_pwrok_time = 64
pmu_battery_warning_level1 = 15
pmu_battery_warning_level2 = 0
pmu_restvol_adjust_time = 60
pmu_ocv_cou_adjust_time = 60
pmu_chgled_func = 0
pmu_chgled_type = 0
pmu_vbusen_func = 1
pmu_reset = 0
pmu_IRQ_wakeup = 0
pmu_hot_shutdowm = 1
pmu_inshort = 0
power_start = 0
pmu_temp_enable = 1
pmu_charge_ltf = 2261
pmu_charge_htf = 388
pmu_discharge_ltf = 3200
pmu_discharge_htf = 237
pmu_temp_para1 = 7466
pmu_temp_para2 = 4480
pmu_temp_para3 = 3518
pmu_temp_para4 = 2786
pmu_temp_para5 = 2223
pmu_temp_para6 = 1788
pmu_temp_para7 = 1448
pmu_temp_para8 = 969
pmu_temp_para9 = 664
pmu_temp_para10 = 466
pmu_temp_para11 = 393
pmu_temp_para12 = 333
pmu_temp_para13 = 283
pmu_temp_para14 = 242
pmu_temp_para15 = 179
pmu_temp_para16 = 134

[pmu2_para]
pmu_used = 0
pmu_twi_addr = 52
pmu_twi_id = 1
pmu_irq_id = 0

[recovery_key]
key_min = 2
key_max = 100

[dvfs_table]
extremity_freq = 1344000000
max_freq = 1200000000
min_freq = 480000000
LV_count = 8
LV1_freq = 1536000000
LV1_volt = 1500
LV2_freq = 1344000000
LV2_volt = 1460
LV3_freq = 1200000000
LV3_volt = 1320
LV4_freq = 1008000000
LV4_volt = 1200
LV5_freq = 816000000
LV5_volt = 1100
LV6_freq = 648000000
LV6_volt = 1040
LV7_freq = 0
LV7_volt = 1040
LV8_freq = 0
LV8_volt = 1040

[Vdevice]
Vdevice_used = 1
Vdevice_0 = port:PA01<5><1><2><default>
Vdevice_1 = port:PA02<5><1><2><default>

[s_uart0]
s_uart_used = 0
s_uart_tx = port:PL02<2><default><default><default>
s_uart_rx = port:PL03<2><default><default><default>

[s_rsb0]
s_rsb_used = 1
s_rsb_sck = port:PL00<2><1><2><default>
s_rsb_sda = port:PL01<2><1><2><default>

[s_jtag0]
s_jtag_used = 0
s_jtag_tms = port:PL04<2><1><2><default>
s_jtag_tck = port:PL05<2><1><2><default>
s_jtag_tdo = port:PL06<2><1><2><default>
s_jtag_tdi = port:PL07<2><1><2><default>

[s_powchk]
s_powchk_used = -2147483648
s_power_reg = 32865
s_system_power = 50

[mali_para]
mali_used = 1
mali_clkdiv = 1
mali_extreme_freq = 408
mali_extreme_vol = 1100

[dram_dvfs_table]
LV_count = 3
LV1_freq = 552000000
LV1_volt = 1100
LV2_freq = 360000000
LV2_volt = 1100
LV3_freq = 0
LV3_volt = 1100

[charging_type]
charging_type = 1

[dram_scene_table]
LV_count = 3
LV1_scene = 1
LV1_freq = 360000000
LV2_scene = 2
LV2_freq = 240000000
LV3_scene = 3
LV3_freq = 168000000

[leds_para]
leds_used = 1
red_led = port:PE16<1><default><default><0>
red_led_active_low = 1

[gpu_mali400_0]
normal_freq = 384
scene_ctrl_status = 0
temp_ctrl_status = 1
tf0_temp = 85
tf0_freq = 240
tf1_temp = 95
tf1_freq = 144




Find the file sinlinx_sina33.fex for a commented lookalike fex.
« Last Edit: December 06, 2025, 05:47:24 pm by Patrick Areny »
 

Offline harryzTopic starter

  • Contributor
  • Posts: 27
  • Country: se
Re: Hack Zortrax Driver board? Port Klipper?
« Reply #47 on: December 06, 2025, 05:25:17 pm »
Quote
At the moment, I am struggling to get the display and the i2c power for the touchscreen running

When I had issues with GPIO setup through devicetree in old projects, I ended up writing my own userland GPIO code that directly works with the chip registers through /dev/mem. Yes, it requires su, but I come from low level bare metal R&D so bite me.

That was written for A20 and A64, so to run it on A33 I'd need to update register maps in headers. Other than that I could port it so you can read and write and monitor I/O banks from userland. I just need to get some board to test it on - my m200+ is in another country and m300+ I have put back together and it's getting some use atm. Only extra raw boards I have here are from non-plus.

Bit hasty to pour 700 Eur into used m200+ and can't really find any PCBs on ebay. Maybe jsut getting a A33 devkit form Olimex would be somewhat a solution.

Quote
I should try the otm8009z.c pannel driver, it seems cleaner that my sunxi kernel sl698ph_720p port

The worst part about the darn display is that I can not find the datasheet for the driver to see what is different in 8009 and 8019A. The 8009 datasheets is all around the place, but 8019 is yet to be found.

https://github.com/OrangePiLibra/OrangePiRDA_kernel/blob/master/drivers/video/rda/rda_panel_otm8019a.c
^- some driver from orange

https://github.com/eliot-shao/qcom/blob/master/display/LCM-HX8394D-otot-z-60/kernel/arch/arm/boot/dts/qcom/msm8916-qrd-skui-slm753-public.dtsi
^- some dts example maybe gives hints

Speaking of - did you check you have reset in right state? Cause that's also handled by GPIO.. Since you don't have GPIO for LDO..

https://android.googlesource.com/kernel/msm/+/android-msm-seed-3.10-n-preview-4/arch/arm/boot/dts/qcom/dsi-panel-otm8019a-fwvga-video.dtsi
^- promising setup block in this one.
« Last Edit: December 06, 2025, 05:34:20 pm by harryz »
 

Offline harryzTopic starter

  • Contributor
  • Posts: 27
  • Country: se
Re: Hack Zortrax Driver board? Port Klipper?
« Reply #48 on: December 06, 2025, 05:33:46 pm »
Quote
I have a merge request on your repo, it is only documentation.

Due to my work schedule I might be missing for a month or two any moment so I will just add you as contributor to the GIT.

I'll try the build at some point but to test it I have to figure out some hardware to test it on.
 

Offline Patrick Areny

  • Regular Contributor
  • *
  • Posts: 58
  • Country: fr
Re: Hack Zortrax Driver board? Port Klipper?
« Reply #49 on: December 06, 2025, 06:00:48 pm »
The Orange pi panel code writes something close to what the sunxi driver writes.
In France a lot of people get rid of the M200plus, I invested 310€ in total on a board from a disassembled printer, and an old printer rev 1.1. It is not free neither. But compared to what it takes to build a Voron, it's fine.

I just checked and the second fex has the proper AXP223 gpio1_ldo configuration. Therefore it must be the good one:

Code: [Select]
[product]
version = "A33-Tablet"
machine = "U708HC"

[platform]
eraseflag = 1
next_work = 2

[target]
boot_clock = 1008
storage_type = -1
burn_key = 1

[key_detect_en]
keyen_flag = 1

[power_sply]
dcdc1_vol = 3000
dcdc2_vol = 1100
dcdc3_vol = 1200
dcdc4_vol = 0
dcdc5_vol = 1500
aldo2_vol = 2500
aldo3_vol = 3000
eldo1_vol = 1800
dldo2_vol = 1800
eldo2_vol = 1800

[card_boot]
logical_start = 40960
sprite_gpio0 =
next_work = 3

[card0_boot_para]
card_ctrl = 0
card_high_speed = 1
card_line = 4
sdc_d1 = port:PF00<2><1><2><default>
sdc_d0 = port:PF01<2><1><2><default>
sdc_clk = port:PF02<2><1><2><default>
sdc_cmd = port:PF03<2><1><2><default>
sdc_d3 = port:PF04<2><1><2><default>
sdc_d2 = port:PF05<2><1><2><default>

[card2_boot_para]
card_ctrl = 2
card_high_speed = 1
card_line = 4
sdc_2xmode = 1
sdc_clk = port:PC05<3><1><2><default>
sdc_cmd = port:PC06<3><1><2><default>
sdc_d0 = port:PC08<3><1><2><default>
sdc_d1 = port:PC09<3><1><2><default>
sdc_d2 = port:PC10<3><1><2><default>
sdc_d3 = port:PC11<3><1><2><default>

[twi_para]
twi_port = 0
twi_scl = port:PH02<2><default><default><default>
twi_sda = port:PH03<2><default><default><default>

[uart_para]
uart_debug_port = 0
uart_debug_tx = port:PF02<3><1><default><default>
uart_debug_rx = port:PF04<3><1><default><default>

[force_uart_para]
force_uart_port = 0
force_uart_tx = port:PF02<3><1><default><default>
force_uart_rx = port:PF04<3><1><default><default>

[jtag_para]
jtag_enable = 0
jtag_ms = port:PF00<3><default><default><default>
jtag_ck = port:PF05<3><default><default><default>
jtag_do = port:PF03<3><default><default><default>
jtag_di = port:PF01<3><default><default><default>

[clock]
pll3 = 297
pll4 = 300
pll6 = 600
pll8 = 408
pll9 = 480
pll10 = 297
pll_cpupat = 0
pll_gpupat = -1002379674
pll_videopat = 0
pll_vepat = 0
pll_hsicpat = 0
pll_depat = 0
pll_mipipat = 0
pll_mipitun = -1979703288
pll_mipibias = -133168128

[pm_para]
standby_mode = 1

[dram_para]
dram_clk = 552
dram_type = 3
dram_zq = 0x3bbb
dram_odt_en = 1
dram_para1 = 284295680
dram_para2 = 0
dram_mr0 = 6208
dram_mr1 = 64
dram_mr2 = 8
dram_mr3 = 0
dram_tpr0 = 0x48a192
dram_tpr1 = 0x1b1b18d
dram_tpr2 = 0x76052
dram_tpr3 = 0x0
dram_tpr4 = 0x0
dram_tpr5 = 0x0
dram_tpr6 = 0x0
dram_tpr7 = 0x0
dram_tpr8 = 0x0
dram_tpr9 = 0x0
dram_tpr10 = 0x0
dram_tpr11 = 0x0
dram_tpr12 = 0xa8
dram_tpr13 = 0x10900

[pm_para]
standby_mode = 1

[wakeup_src_para]
cpu_en = 0
cpu_freq = 48
pll_ratio = 273
dram_selfresh_en = 1
dram_freq = 36
wakeup_src_wl = port:PL07<4><default><default><0>
wakeup_src_bt = port:PL09<4><default><default><0>

[twi0]
twi_used = 1
twi_scl = port:PH02<2><default><default><default>
twi_sda = port:PH03<2><default><default><default>

[twi1]
twi_used = 1
twi_scl = port:PH04<2><default><default><default>
twi_sda = port:PH05<2><default><default><default>

[twi2]
twi_used = 1
twi_scl = port:PE12<3><default><default><default>
twi_sda = port:PE13<3><default><default><default>

[uart0]
uart_used = 1
uart_port = 0
uart_type = 2
uart_tx = port:PF02<3><1><default><default>
uart_rx = port:PF04<3><1><default><default>

[uart1]
uart_used = 1
uart_port = 1
uart_type = 4
uart_tx = port:PG06<2><1><default><default>
uart_rx = port:PG07<2><1><default><default>
uart_rts = port:PG08<2><1><default><default>
uart_cts = port:PG09<2><1><default><default>

[uart2]
uart_used = 1
uart_type = 2
uart_tx = port:PB00<2><1><default><default>
uart_rx = port:PB01<2><1><default><default>

[uart3]
uart_used = 1
uart_type = 2
uart_tx = port:PH06<3><1><default><default>
uart_rx = port:PH07<3><1><default><default>

[uart4]
uart_used = 0
uart_port = 4
uart_type = 2
uart_tx = port:PA04<2><1><default><default>
uart_rx = port:PA05<2><1><default><default>
uart_rts = port:PA06<2><1><default><default>
uart_cts = port:PA07<2><1><default><default>

[spi0]
spi_used = 0
spi_cs_bitmap = 1
spi_mosi = port:PC00<3><default><default><default>
spi_miso = port:PC01<3><default><default><default>
spi_sclk = port:PC02<3><default><default><default>
spi_cs0 = port:PC03<3><1><default><default>

[spi1]
spi_used = 0
spi_cs_bitmap = 1
spi_cs0 = port:PA00<2><1><default><default>
spi_sclk = port:PA01<2><default><default><default>
spi_mosi = port:PA02<2><default><default><default>
spi_miso = port:PA03<2><default><default><default>

[spi_devices]
spi_dev_num = 1

[spi_board0]
modalias = "at25df641"
max_speed_hz = 50000000
bus_num = 0
chip_select = 0
mode = 0

[ctp_para]
ctp_used = 1
ctp_name = "gt9xx_ts"
ctp_twi_id = 0
ctp_twi_addr = 0x5d
ctp_screen_max_x = 720
ctp_screen_max_y = 1280
ctp_revert_x_flag = 0
ctp_revert_y_flag = 0
ctp_exchange_x_y_flag = 0
ctp_int_port = port:PB05<4><default><default><default>
ctp_wakeup = port:PG10<1><default><default><1>
ctp_power_ldo = "axp22_ldoio1"
ctp_power_ldo_vol = 3300
ctp_power_io =

[ctp_list_para]
ctp_det_used = 0
ft5x_ts = 0
gt82x = 0
gslX680 = 0
gslX680new = 1
gt9xx_ts = 0
gt9xxf_ts = 1
tu_ts = 0
gt818_ts = 0
zet622x = 0
aw5306_ts = 0
icn83xx_ts = 0

[tkey_para]
tkey_used = 0
tkey_twi_id =
tkey_twi_addr =
tkey_int =

[motor_para]
motor_used = 0
motor_shake = port:power3<1><default><default><1>
motor_ldo = ""
motor_ldo_voltage = 3300

[ths_para]
ths_used = 1
ths_trip1_count = 3
ths_trip1_0 = 75
ths_trip1_1 = 90
ths_trip1_2 = 110
ths_trip1_0_min = 0
ths_trip1_0_max = 1
ths_trip1_1_min = 1
ths_trip1_1_max = 3
ths_trip1_2_min = 0
ths_trip1_2_max = 0

[cooler_table]
cooler_count = 4
cooler0 = "1344000 4 4294967295 0"
cooler1 = "1200000 4 4294967295 0"
cooler2 = "1008000 4 4294967295 0"
cooler3 = "648000 4 4294967295 0"

[nand0_para]
nand_support_2ch = 0
nand0_used = 1
nand0_we = port:PC00<2><default><2><default>
nand0_ale = port:PC01<2><default><2><default>
nand0_cle = port:PC02<2><default><2><default>
nand0_ce1 = port:PC03<2><default><2><default>
nand0_ce0 = port:PC04<2><default><2><default>
nand0_nre = port:PC05<2><default><2><default>
nand0_rb0 = port:PC06<2><default><2><default>
nand0_rb1 = port:PC07<2><default><2><default>
nand0_d0 = port:PC08<2><default><2><default>
nand0_d1 = port:PC09<2><default><2><default>
nand0_d2 = port:PC10<2><default><2><default>
nand0_d3 = port:PC11<2><default><2><default>
nand0_d4 = port:PC12<2><default><2><default>
nand0_d5 = port:PC13<2><default><2><default>
nand0_d6 = port:PC14<2><default><2><default>
nand0_d7 = port:PC15<2><default><2><default>
nand0_ndqs = port:PC16<2><default><2><default>
nand0_ce2 = port:PC17<2><default><2><default>
nand0_ce3 = port:PC18<2><default><2><default>
id_number_ctl = 2
nand_p1 = 131094

[disp_init]
disp_init_enable = 1
disp_mode = 0
screen0_output_type = 1
screen0_output_mode = 4
screen1_output_type = 1
screen1_output_mode = 4
fb0_format = 10
fb0_pixel_sequence = 0
fb0_scaler_mode_enable = 0
fb0_width = 0
fb0_height = 0
fb1_format = 10
fb1_pixel_sequence = 0
fb1_scaler_mode_enable = 0
fb1_width = 0
fb1_height = 0
lcd0_backlight = 197
lcd1_backlight = 197
lcd0_bright = 50
lcd0_contrast = 50
lcd0_saturation = 57
lcd0_hue = 50
lcd1_bright = 50
lcd1_contrast = 50
lcd1_saturation = 57
lcd1_hue = 50

[lcd0_para]
lcd_used = 1
lcd_driver_name = "ili9881"
lcd_if = 4
lcd_x = 720
lcd_y = 1280
lcd_width = 120
lcd_height = 160
lcd_dclk_freq = 63
lcd_pwm_used = 1
lcd_pwm_ch = 0
lcd_pwm_freq = 50000
lcd_pwm_pol = 1
lcd_hbp = 44
lcd_ht = 808
lcd_hspw = 6
lcd_vbp = 16
lcd_vt = 1312
lcd_vspw = 2
lcd_dsi_if = 0
lcd_dsi_lane = 4
lcd_dsi_format = 0
lcd_dsi_eotp = 0
lcd_dsi_vc = 0
lcd_dsi_te = 0
lcd_frm = 1
lcd_gamma_en = 0
lcd_bright_curve_en = 0
lcd_cmap_en = 0
deu_mode = 0
lcdgamma4iep = 22
smart_color = 90
lcd_bl_en = port:PB06<1><0><default><1>
lcd_power = "axp22_dc1sw"
lcd_power1 = "axp22_eldo2"
lcd_gpio_0 = port:PH09<1><0><default><0>

[pwm0_para]
pwm_used = 1
pwm_positive = port:PH00<2><0><default><default>

[pwm1_para]
pwm_used = 1
pwm_positive = port:PH01<2><0><default><default>

[csi0]
vip_used = 1
vip_mode = 0
vip_dev_qty = 1
vip_define_sensor_list = 1
vip_csi_pck = port:PE00<2><default><default><default>
vip_csi_mck = port:PE01<2><default><default><default>
vip_csi_hsync = port:PE02<2><default><default><default>
vip_csi_vsync = port:PE03<2><default><default><default>
vip_csi_d0 = port:PE04<2><default><default><default>
vip_csi_d1 = port:PE05<2><default><default><default>
vip_csi_d2 = port:PE06<2><default><default><default>
vip_csi_d3 = port:PE07<2><default><default><default>
vip_csi_d4 = port:PE08<2><default><default><default>
vip_csi_d5 = port:PE09<2><default><default><default>
vip_csi_d6 = port:PE10<2><default><default><default>
vip_csi_d7 = port:PE11<2><default><default><default>
vip_dev0_mname = "gc2145"
vip_dev0_pos = "rear"
vip_dev0_lane = 1
vip_dev0_twi_id = 1
vip_dev0_twi_addr = 120
vip_dev0_isp_used = 0
vip_dev0_fmt = 0
vip_dev0_stby_mode = 0
vip_dev0_vflip = 0
vip_dev0_hflip = 0
vip_dev0_iovdd = "axp22_dldo3"
vip_dev0_iovdd_vol = 2800000
vip_dev0_avdd = ""
vip_dev0_avdd_vol =
vip_dev0_dvdd = ""
vip_dev0_dvdd_vol = 1500000
vip_dev0_afvdd =
vip_dev0_afvdd_vol =
vip_dev0_power_en =
vip_dev0_reset = port:PE14<1><default><default><0>
vip_dev0_pwdn = port:PE15<1><default><default><1>
vip_dev0_flash_en =
vip_dev0_flash_mode =
vip_dev0_af_pwdn =
vip_dev1_mname = "gc0308"
vip_dev1_pos = "front"
vip_dev1_lane = 1
vip_dev1_twi_id = 2
vip_dev1_twi_addr = 66
vip_dev1_isp_used = 0
vip_dev1_fmt = 0
vip_dev1_stby_mode = 1
vip_dev1_vflip = 0
vip_dev1_hflip = 0
vip_dev1_iovdd = "axp22_dldo3"
vip_dev1_iovdd_vol = 2800000
vip_dev1_avdd = "axp22_ldoio0"
vip_dev1_avdd_vol = 2800000
vip_dev1_dvdd = "axp22_eldo2"
vip_dev1_dvdd_vol = 1800000
vip_dev1_afvdd = "axp22_eldo3"
vip_dev1_afvdd_vol = 2800000
vip_dev1_power_en =
vip_dev1_reset = port:PE16<1><default><default><0>
vip_dev1_pwdn = port:PE15<1><default><default><1>
vip_dev1_flash_en =
vip_dev1_flash_mode =
vip_dev1_af_pwdn =

[mmc0_para]
sdc_used = 1
sdc_detmode = 2
sdc_buswidth = 4
sdc_d1 = port:PF00<2><1><2><default>
sdc_d0 = port:PF01<2><1><2><default>
sdc_clk = port:PF02<2><1><2><default>
sdc_cmd = port:PF03<2><1><2><default>
sdc_d3 = port:PF04<2><1><2><default>
sdc_d2 = port:PF05<2><1><2><default>
sdc_det = port:PB04<4><1><2><default>
sdc_power_supply = "axp22_dcdc1"
sdc_use_wp = 0
sdc_wp =
sdc_isio = 0
sdc_regulator = "none"

[mmc1_para]
sdc_used = 1
sdc_detmode = 4
sdc_buswidth = 4
sdc_clk = port:PG00<2><1><1><default>
sdc_cmd = port:PG01<2><1><1><default>
sdc_d0 = port:PG02<2><1><1><default>
sdc_d1 = port:PG03<2><1><1><default>
sdc_d2 = port:PG04<2><1><1><default>
sdc_d3 = port:PG05<2><1><1><default>
sdc_det =
sdc_use_wp = 0
sdc_wp =
sdc_isio = 1
sdc_regulator = "none"

[mmc2_para]
sdc_used = 0
sdc_detmode = 3
sdc_buswidth = 8
sdc_2xmode = 1
sdc_clk = port:PC05<3><1><2><default>
sdc_cmd = port:PC06<3><1><2><default>
sdc_d0 = port:PC08<3><1><2><default>
sdc_d1 = port:PC09<3><1><2><default>
sdc_d2 = port:PC10<3><1><2><default>
sdc_d3 = port:PC11<3><1><2><default>
sdc_d4 = port:PC12<3><1><2><default>
sdc_d5 = port:PC13<3><1><2><default>
sdc_d6 = port:PC14<3><1><2><default>
sdc_d7 = port:PC15<3><1><2><default>
emmc_rst = port:PC16<3><1><2><default>
sdc_power_supply = "axp22_dcdc1"
sdc_det =
sdc_use_wp = 0
sdc_wp =
sdc_isio = 0
sdc_regulator = "none"

[usbc0]
usb_used = 1
usb_port_type = 0
usb_detect_type = 1
usb_id_gpio = port:PH08<0><1><default><default>
usb_det_vbus_gpio = "axp_ctrl"
usb_drv_vbus_gpio = port:power4<1><0><default><0>
usb_restrict_gpio =
usb_host_init_state = 0
usb_restric_flag = 0
usb_restric_voltage = 3550000
usb_restric_capacity = 5
usb_regulator_io = "nocare"
usb_regulator_vol = 0
usb_regulator_id_vbus = "axp22_dcdc1"
usb_regulator_id_vbus_vol = 3000000

[usbc1]
usb_used = 1
usb_drv_vbus_gpio =
usb_restrict_gpio =
usb_host_init_state = 1
usb_restric_flag = 0
usb_regulator_io = "nocare"
usb_regulator_vol = 0
usb_not_suspend = 0

[usb_feature]
vendor_id = 7994
mass_storage_id = 4096
adb_id = 4097
manufacturer_name = "USB Developer"
product_name = "Android"
serial_number = "20080411"

[msc_feature]
vendor_name = "USB 2.0"
product_name = "USB Flash Driver"
release = 100
luns = 2

[serial_feature]
serial_unique = 1
sn_filename = "sn.txt"

[gsensor_para]
gsensor_used = 0
gsensor_twi_id = 1
gsensor_twi_addr = 0x18
gsensor_int1 =
gsensor_int2 =

[gsensor_list_para]
gsensor_det_used = 0
bma250 = 1
stk831x = 0
mma8452 = 1
mma7660 = 1
mma865x = 1
mc32x0 = 0
afa750 = 1
lis3de_acc = 1
lis3dh_acc = 1
kxtik = 1
dmard10 = 0
dmard06 = 1
mxc622x = 1
fxos8700 = 1
lsm303d = 1

[rf_para]
module_num = 2
module_power1 = "axp22_dldo1"
module_power1_vol = 3300000
module_power2 = ""
module_power2_vol =
module_power3 = ""
module_power3_vol =
power_switch = port:power0<1><0><default><0>
chip_en =
lpo_use_apclk = "losc_out"

[wifi_para]
wifi_used = 1
wifi_sdc_id = 1
wifi_usbc_id = 1
wifi_usbc_type = 1
wl_reg_on = port:PL06<1><default><default><0>
wl_host_wake = port:PL07<4><default><default><0>
wl_host_wake_invert = 0

[bt_para]
bt_used = 1
bt_uart_id = 1
bt_rst_n = port:PL08<1><default><default><0>
bt_wake = port:PL10<1><default><default><0>
bt_host_wake = port:PL09<4><default><default><0>
bt_wake_invert = 0
bt_host_wake_invert = 0

[3g_para]
3g_used = 0
3g_usbc_num = 1
3g_uart_num = 2
bb_name = "em66"
bb_vbat =
bb_on =
bb_pwr_on = port:PL03<1><default><default><0>
bb_wake = port:PL04<1><default><default><0>
bb_rf_dis = port:PL11<1><default><default><0>
bb_rst = port:PL05<1><default><default><0>
bb_dldo = "axp22_aldo1"
bb_dldo_min_uV = 2800000
bb_dldo_max_uV = 2800000

[gy_para]
gy_used = 0
gy_twi_id = 1
gy_twi_addr = 106
gy_int1 =
gy_int2 =

[gy_list_para]
gy_det_used = 0
l3gd20_gyr = 1

[ls_para]
ls_used = 0
ls_twi_id = 1
ls_twi_addr = 35
ls_int = port:PB07<4><1><default><default>

[ls_list_para]
ls_det_used = 0
ltr_501als = 1
jsa1212 = 1

[compass_para]
compass_used = 0
compass_twi_id = 1
compass_twi_addr = 13
compass_int =

[gpio_para]
gpio_used = 1
gpio_pin_1 = port:PB02<1><default><default><0>
gpio_pin_2 = port:PB03<1><default><default><0>
gpio_pin_3 = port:PE17<1><default><default><1>

[i2s0]
i2s0_used = 0
i2s0_channel = 2
i2s0_master = 4
i2s0_select = 1
audio_format = 1
signal_inversion = 1
over_sample_rate = 512
sample_resolution = 16
word_select_size = 32
pcm_sync_period = 256
msb_lsb_first = 0
sign_extend = 0
slot_index = 0
slot_width = 16
frame_width = 1
tx_data_mode = 1
rx_data_mode = 1
i2s0_mclk =
i2s0_bclk = port:PB04<2><1><default><default>
i2s0_lrclk = port:PB05<2><1><default><default>
i2s0_dout0 = port:PB06<2><1><default><default>
i2s0_dout1 =
i2s0_dout2 =
i2s0_dout3 =
i2s0_din = port:PB07<2><1><default><default>

[i2s1]
i2s1_used = 0
i2s1_channel = 2
i2s1_master = 4
i2s1_select = 1
audio_format = 1
signal_inversion = 1
over_sample_rate = 512
sample_resolution = 16
word_select_size = 32
pcm_sync_period = 64
msb_lsb_first = 0
sign_extend = 0
slot_index = 0
slot_width = 16
frame_width = 1
tx_data_mode = 0
rx_data_mode = 0
i2s1_mclk =
i2s1_bclk = port:PG11<2><1><default><default>
i2s1_lrclk = port:PG10<2><1><default><default>
i2s1_dout = port:PG12<2><1><default><default>
i2s1_din = port:PG13<2><1><default><default>

[audio0]
audio_used = 1
headphone_vol = 59
earpiece_vol = 59
cap_vol = 5
pa_single_vol = 62
pa_double_used = 0
pa_double_vol = 62
headphone_direct_used = 1
headset_mic_vol = 3
main_mic_vol = 1
audio_hp_ldo = "none"
audio_pa_ctrl = port:PE17<1><default><default><0>
aif2_used = 0
aif3_used = 0
headphone_mute_used = 0
DAC_VOL_CTRL_SPK = 41120
DAC_VOL_CTRL_HEADPHONE = 41120
agc_used = 0
drc_used = 0

[pmu1_para]
pmu_used = 1
pmu_twi_addr = 52
pmu_twi_id = 1
pmu_irq_id = 0
pmu_battery_rdc = 30
pmu_battery_cap = 0
pmu_batdeten = 1
pmu_chg_ic_temp = 0
pmu_runtime_chgcur = 900
pmu_earlysuspend_chgcur = 1200
pmu_suspend_chgcur = 1300
pmu_shutdown_chgcur = 1300
pmu_init_chgvol = 4200
pmu_init_chgend_rate = 15
pmu_init_chg_enabled = 1
pmu_init_adc_freq = 800
pmu_init_adcts_freq = 800
pmu_init_chg_pretime = 70
pmu_init_chg_csttime = 720
pmu_batt_cap_correct = 1
pmu_bat_regu_en = 0
pmu_bat_para1 = 0
pmu_bat_para2 = 1
pmu_bat_para3 = 2
pmu_bat_para4 = 3
pmu_bat_para5 = 5
pmu_bat_para6 = 8
pmu_bat_para7 = 11
pmu_bat_para8 = 15
pmu_bat_para9 = 18
pmu_bat_para10 = 20
pmu_bat_para11 = 23
pmu_bat_para12 = 25
pmu_bat_para13 = 28
pmu_bat_para14 = 30
pmu_bat_para15 = 33
pmu_bat_para16 = 36
pmu_bat_para17 = 40
pmu_bat_para18 = 42
pmu_bat_para19 = 45
pmu_bat_para20 = 48
pmu_bat_para21 = 53
pmu_bat_para22 = 57
pmu_bat_para23 = 64
pmu_bat_para24 = 72
pmu_bat_para25 = 81
pmu_bat_para26 = 84
pmu_bat_para27 = 88
pmu_bat_para28 = 93
pmu_bat_para29 = 95
pmu_bat_para30 = 97
pmu_bat_para31 = 99
pmu_bat_para32 = 100
pmu_usbvol_limit = 0
pmu_usbcur_limit = 0
pmu_usbvol = 4000
pmu_usbcur = 0
pmu_usbvol_pc = 4400
pmu_usbcur_pc = 500
pmu_pwroff_vol = 3100
pmu_pwron_vol = 2800
pmu_pekoff_time = 6000
pmu_pekoff_func = 0
pmu_pekoff_en = 1
pmu_peklong_time = 1500
pmu_pekon_time = 1000
pmu_pwrok_time = 64
pmu_battery_warning_level1 = 20
pmu_battery_warning_level2 = 5
pmu_restvol_adjust_time = 30
pmu_ocv_cou_adjust_time = 60
pmu_chgled_func = 0
pmu_chgled_type = 0
pmu_vbusen_func = 1
pmu_reset = 0
pmu_IRQ_wakeup = 0
pmu_hot_shutdowm = 1
pmu_inshort = 0
power_start = 0
pmu_temp_enable = 1
pmu_charge_ltf = 2261
pmu_charge_htf = 388
pmu_discharge_ltf = 3200
pmu_discharge_htf = 237
pmu_temp_para1 = 7466
pmu_temp_para2 = 4480
pmu_temp_para3 = 3518
pmu_temp_para4 = 2786
pmu_temp_para5 = 2223
pmu_temp_para6 = 1788
pmu_temp_para7 = 1448
pmu_temp_para8 = 969
pmu_temp_para9 = 664
pmu_temp_para10 = 466
pmu_temp_para11 = 393
pmu_temp_para12 = 333
pmu_temp_para13 = 283
pmu_temp_para14 = 242
pmu_temp_para15 = 179
pmu_temp_para16 = 134

[pmu2_para]
pmu_used = 0
pmu_twi_addr = 52
pmu_twi_id = 1
pmu_irq_id = 0

[recovery_key]
key_min = 2
key_max = 100

[dvfs_table]
extremity_freq = 1344000000
max_freq = 1200000000
min_freq = 480000000
LV_count = 8
LV1_freq = 1536000000
LV1_volt = 1500
LV2_freq = 1344000000
LV2_volt = 1460
LV3_freq = 1200000000
LV3_volt = 1320
LV4_freq = 1008000000
LV4_volt = 1200
LV5_freq = 816000000
LV5_volt = 1100
LV6_freq = 648000000
LV6_volt = 1040
LV7_freq = 0
LV7_volt = 1040
LV8_freq = 0
LV8_volt = 1040

[Vdevice]
Vdevice_used = 1
Vdevice_0 = port:PA01<5><1><2><default>
Vdevice_1 = port:PA02<5><1><2><default>

[s_uart0]
s_uart_used = 0
s_uart_tx = port:PL02<2><default><default><default>
s_uart_rx = port:PL03<2><default><default><default>

[s_rsb0]
s_rsb_used = 1
s_rsb_sck = port:PL00<2><1><2><default>
s_rsb_sda = port:PL01<2><1><2><default>

[s_jtag0]
s_jtag_used = 0
s_jtag_tms = port:PL04<2><1><2><default>
s_jtag_tck = port:PL05<2><1><2><default>
s_jtag_tdo = port:PL06<2><1><2><default>
s_jtag_tdi = port:PL07<2><1><2><default>

[s_powchk]
s_powchk_used = -2147483648
s_power_reg = 32865
s_system_power = 50

[mali_para]
mali_used = 1
mali_clkdiv = 1
mali_extreme_freq = 408
mali_extreme_vol = 1100

[dram_dvfs_table]
LV_count = 3
LV1_freq = 552000000
LV1_volt = 1100
LV2_freq = 360000000
LV2_volt = 1100
LV3_freq = 0
LV3_volt = 1100

[charging_type]
charging_type = 1

[dram_scene_table]
LV_count = 3
LV1_scene = 1
LV1_freq = 360000000
LV2_scene = 2
LV2_freq = 240000000
LV3_scene = 3
LV3_freq = 168000000

[leds_para]
leds_used = 1
red_led = port:PE16<1><default><default><0>
red_led_active_low = 1

[gpu_mali400_0]
normal_freq = 384
scene_ctrl_status = 0
temp_ctrl_status = 1
tf0_temp = 85
tf0_freq = 240
tf1_temp = 95
tf1_freq = 144



I have some rework to do.
Edit: the second fex does not make sense. The LCD and touchscreen do not match the hardware. But it has the lodio1 configuration.
« Last Edit: December 06, 2025, 06:07:54 pm by Patrick Areny »
 


Share me

Digg  Facebook  SlashDot  Delicious  Technorati  Twitter  Google  Yahoo
Smf

 

-->