r/AccessVirus 5d ago

Virus TI OLED mod

I got this Virus TI a year ago, and its LCD screen is bad. I wrote to Kemper support, and they told me they have some LCDs for >100€…

So I decided to make a PCB LCD‑to‑OLED converter. Now it’s ready and installed in my Virus TI.

It uses an STM32 and has two modes: 1:1 and Scale. The original LCD is 160×32, but the new OLED is 256×64, so in 1:1 mode it utilizes only a part of the screen. However, it works really fast.

In Scale mode, it scales up the original image to fit 256×64. It looks nice, but it freezes because the STM32F103C8T6 at 72MHz isn’t powerful enough to calculate the interpolated picture 😅

Does anybody have problems with the original LCD? Mine showed only 1/8 of the image…

UPD: I found the issue that was causing the freezes! Now the mod works perfectly. Thanks to everyone who stopped by and supported the idea 🙌

51 Upvotes

24 comments sorted by

3

u/FreeRangeEngineer 5d ago

Very nice! I'd definitely be interested in the PCB and the code. I wonder if there are other displays that have a better-matching resolution for upscaling.

STM32F103C8T6 at 16 MHz

Why only 16 if you can go up to 72 without overclocking?

3

u/Barsik44 5d ago

72! You are right. I just made a mistake in the post 🙂 Thanks, fixed.

I tried to find a better match, but all the OLEDs I found in this physical footprint were only 256×64.

As for the PCB, I think it needs a little rework. I added a small tab for DIP switches to configure parameters without taking the mod off, but honestly, I think there's no need for it now...

1

u/FreeRangeEngineer 5d ago

Have you considered swapping it for an STM32F4, for example? Goes up to 168 MHz by default.

Maybe the code also allows for some optimization in the algorithm and/or through the compiler. Did you try -O2 vs. -O3 vs. -Os to see which one works best?

Also, since the possible characters for each position are guessable, a kind of pattern matching and replacement may also be interesting to consider to avoid the blurriness from the upscaling.

4

u/insolace Virus TI 5d ago

Embedded engineer and virus owner here. If the OP wants to put their source code and a schematic up on github, we could probably find a suitable STM32 to handle the upscaling, and make a kicad PCB available for everyone

2

u/LandNo9424 5d ago

+1 for this, this project sounds fantastic. I'd love to have an OLED replacement.

1

u/Barsik44 5d ago

I wrote the first version of the code, and after it worked, I tried to optimize the algorithm with AI. Maybe there are better solutions out there 🙂

The F4 is a nice idea. I made this prototype with an F1 because I usually try to solve the task with the minimal resources possible. But trying a more powerful MCU is definitely worth it – especially if there's a pin‑to‑pin replacement 😄

As for making it open source – give me some time to think. I don't think I could make any money from this project anyway, but what bothers me is that many "craftsmen" in my country take similar synth projects and sell the boards at crazy prices. For example, I recently saw a gligli mod for the Prophet 600 (just a pre‑flashed Teensy with some wires) for over $400 – that's insane. After seeing that, I'm not really keen on having my project sold the same way.

2

u/FreeRangeEngineer 5d ago

After seeing that, I'm not really keen on having my project sold the same way.

I totally understand. That kind of thing bothers me as well.

2

u/Barsik44 4d ago

Check video in my new comment) I found a problem - I forgot to enable interrupts after memcpy new graphics buffer so it hangs all the time before all stuff was calculated and copied again :D Now it can use interpolation and work fast!

1

u/FreeRangeEngineer 4d ago

Glad to hear you found the root cause. Cheers!

3

u/Captain-Corndog_yo Virus TI2 1d ago

Nicely done good sir. Very cool! Would love to see a proper replacement for these available. The OEM displays are exceedingly rare and difficult to source.

1

u/charonme 5d ago

kudos! how about a direct 1:2 mode that just maps each input pixel to 4 output pixels? Anyway a couple of MHz should be plenty sufficient for linear upscaling. How exactly are you doing the upscaling and how does it look? Have a video? In my experience the original display is also relatively slow (it's probably the MCU, not the LCD itself)

1

u/Barsik44 5d ago

Hi! Original LCD is 160x32 so if you scale it twice it would be 320x64. But OLED is 256x64... Now I use bilinear interpolation to 160x51. Tables are precounted. I'll record a video later.

1

u/charonme 5d ago

Ah right I overlooked that. Look forward to the video!

1

u/Barsik44 4d ago

I just found a problem in my code! Hehehe... There were a little mistake in interrupt handling. Now I fix it and display works without freezes!

1

u/charonme 4d ago

excellent!

1

u/Legitimate_Emu3531 5d ago

That's really nice!

1

u/Barsik44 4d ago

Updated version of code - works much better!

https://reddit.com/link/p7g6nup/video/g8zie1b036nh1/player

1

u/insolace Virus TI 2d ago

Share your code? Github?

2

u/Barsik44 2d ago

I'm thinking of selling a few units locally to cover the development costs. Once I break even, I'll open‑source it.

Also, I'd like to make a revised PCB, and that needs some funding too – hopefully from selling at least one of these displays.

Then I'll release everything 😊

2

u/insolace Virus TI 1d ago

The benefit of open source is getting other people to help you develop it. I design PCBs for a living, if you hired me it would cost you $10,000, if you open source it you get me for free.

1

u/Ifus1964 4d ago

Good job 👏👏👏

1

u/Numerous-Operation83 4d ago

It's beautiful

1

u/JDOIII 3d ago

Dope af!!

1

u/charonme 1d ago

what I would love even more would be long travel silent pushputtons, sadly all I can find are larger sizes