Reversing and repurposing resin 3D printer

About me

Goran

 

Repair technician of informatics equipment

Repair technician of banking equipment

SW/HW design engineer (LoRa, NB-IoT, FPGA...)

Member of Radiona.org – Zagreb Makerspace

Meetups, lectures, workshops, exibitions...

CEO and co-founder of Intergalaktik d.o.o.

About RadionaOrg

Radiona.org is a non-profit organisation and citizen lab consisting of makerspace/hackerspace, media art lab, Repair Café and residence program founded in 2011. The organisation is dealing with DIY (do-it-yourself), DIWO (do-it-with-others) and DITO (do-it-together) cultures, STEAM concepts, interdisciplinary and intergenerational non-formal education and hybrid activities.

 

It is a diverse and intergenerational community of different professions working together.

It all started with simple task

Could you create low budget machine that will be used for measuring displacement sensors?

Usually those machines cost more then €10K and they do more then I need.

But I just need to move motor for 0.1mm and take measures to confirm how sensor will react in different conditions.

https://www.hans-schmidt.com

Industrial grade

Put sensor on any of Prusa axes.

Send G-CODE to printer to move to new location.

Use SCPI to get voltage from multi-meter.

Calculate displacement.

Refresh graph and gauges.

Those tasks are piece of cake for

Envox EEZ Studio ( opensource )

Croatian ( Zadar / Zagreb ) project

Let's use Prusa instead

Envox EEZ Studio

Final working setup

PoC - confirmed!

But what about resin printer?

Even cheap resin printer are precise up to 0.01mm.

 

They look almost the same as those €10K industrial tools.

 

I can just buy one, and use same G-CODE with same setup!

My plan collapsed!

Controlling this printer with GODE is now working.

Printer only has USB host for USB stick.

 

Serial over WIFI should work, but I have checked each serial port directly but it was not responsive.

I have tried few more simple things but nothing worked!

 

I was stuck!

 

And If you are stuck you need to search did someone else did something with those printers.

Lets check what is inside!

On github I have found impressive write up on hacking Mono 4K

 

https://github.com/nviennot/reversing-mono4k

 

This was extremely helpful in my work

I first tried to compile firmware - as it would be perfect to just build up on existing code.

Open Firmware for Mono 4K is written in Rust and I was not able to compile it on my Linux.

I could just use write-up and start almost from zero!

 

Mono 4K board is almost the same as Mono 6Ks

except 6Ks has GigaDevice GD32F427 MCU

Pin out is different so I need to get board out and check physical connections.

Do not tell anyone!

Who would guess but GigaDevice GD32F427 is clone of STM32F427

 

ST has superior tool chain and as I need fast results I will try if ST tools will work!

 

Spoiler Alert!

 

Same FW works on both chips!

So I can continue with CubeMX generated code!

 

Authors also created simulator!

As I was reading write-up I have noticed that authors also created simulator for resin printers.

Simulator can run binary and have some of printer peripherals.

Running that simulator could help me in finding pin out.

But once I have run simulator with everything just stopped.

Later I have discovered that because of missing peripheral I need to apply patches.

To know exactly what to do you will also need Ghidra

Ghidra and SVD loader

Tools did not help

As I could not get to the authors and I am not usually doing reversing I was not able to find out FMC screen pin out.

So I have tried manually.

We have a picture!

Almost done!

One more stupid thing on this printer is that Touch is using SoftSPI

So I needed to rewrite Touch driver.

After that I spend some time in getting LVGL working.

And after I got LVGL working in no time I had

Envox EEZ GUI on board!

Motor driver was also easy and I have used IRNAS

https://github.com/IRNAS/AccelStepper

 

 

 

And now I have everything I need for my displacement machine!

Back to the tools!

Now I do have everything for my machine, but if I could only get big Mono LCD to work I could also make fully open printing firmware.

 

Big Screen is connected to FPGA it it MIPI screen

FPGA has SDRAM

GD32 is sending commands to FGPA that control's the screen

Buy faster equipment

Need for speed!

Catch me if you can!

Applying patches in emulator!

Once emulator stops you can use ghidra to check that address

Then you can use asm.py to convert assembler core to jump or NOP

After that you just add that patch to emulator and it will run patched FW

Let's ask ChatGPT

Found a divider setup!

After some time I have found where divider is set.

I have checked with patch in emulator and I have noticed that value of register is really changed and that divider should be higher.

So I applied patch in Ghidra and load FW to printer!

Hello slow SPI!

Getting the screen protocol!

After I recorded complete protocol that printer is using I was not able to understand how it is working, and it was bit different then on mono 4K

So I have contacted Igor Brkić, and he helped me to get screen running in no time!

He will talk more about his part at BalCCon2k24

What is next?

Now that we have completely reversed printer we can do cool stuff!

 

With little bit effort we could do fully open source printer firmware

 

We can do PCB exposure box for DIY PCBs

 

We could also try to use this printer and do home made Transistors

 

ChatGPT DIY transistors recept

Thank you!

 

https://intergalaktik.eu/news

http://lemilica.com

https://radiona.org/

https://www.envox.eu/

https://discord.gg/qwMUk6W

 

https://github.com/goran-mahovlic/reverse_mono_6ks

Made with Slides.com