Open Smart 3.2" HX8352B problems

Hi all,
So i got this display - it's an open-smart 3.2 touch screen display.

Given that i'm here, it's not working. I have installed David Prentice's MCUFRIEND_kbv (test_8352B branch on github) and made the following changes.

mcufriend_special.h: un-commented USE_OPENSMART_SHIELD_PINOUT
mcufriend_shield.h: un-commented USE_SPECIAL
MCUFRIEND_kbv,cpp: un-commented SUPPORT_8352B (it does warn it's untested)

i'm happy to test this!

Running graphictest_kbv breathes life, but nothing shows up with any level of accuracy see youtube video of it here.

I'm happy to make any adjustments and report the results.

Yes, it does not work in Landscape modes.

I ordered an Open-Smart display a week ago. With luck it might arrive within a week (or two).

If I get it working ok, I will issue a new Release of the MCUFRIEND_kbv library.


OK great David, i can wait!

Out of curiosity what needs to be done to get this to work? I write code (C#) for a big chip-manufacturer and have a background with digital-design (Verilog), so i'm not afraid of software/electronics/datasheets, is it just a case of mapping register addresses from an existing chip? (is there a working version of the HX8352A?)

I have datasheets for HX8352-A and for HX8352-B.
I do not own either controller (yet).

If there is an HX8352-A owner out there, she could tell you whether it works.
Unfortunately I do not always get feedback.

I am fairly confident that I can get a controller working on my desk if there is a datasheet.
Can you find datasheets for FocalTech FT1509? Or "unknown" controllers with ID=0x6090 and ID=0x9401.

I have got some controllers working without a datasheet but it is painful.


I’ll search the databases at work and get back to you. Might take a few days.

Open-Smart - (are they just a product line for Aliexpress?) have some examples using the MCUFRIEND library together with Adafruit_gfx

#include <Adafruit_GFX.h> // Core graphics library
//#include <Adafruit_TFTLCD.h> // Hardware-specific library
#include <MCUFRIEND_kbv.h>
MCUFRIEND_kbv tft;

SO i guess this is a good place to start - diff the files and see what was changed?

See attached, and this youtube video.

I can’t get the example for pulling images of the memory card to work, and the touch demo need calibrating. (1000 KB)

I downloaded their hacked library and edited it to use a class MCUFRIEND_smart instead of my MCUFRIEND_kbv class.

When my display arrives, I can compare behaviours using the actual hardware.

From a brief glance at their "hack", they convert every landscape pixel into PORTRAIT coordinates.
This obviously works but is incredibly inefficient.

TFT controllers have registers that you configure to do this in hardware. That is why my library writes at the same speed in any rotation.

At a guess, I just need to configure the MADCTL (0x16) register bits to get the LANDSCAPE work properly e.g. MY, MX, SS, GS. Easy to do on my desk when my display arrives.


I received my OPENSMART Shield in the post today.

The Landscape fix was relatively simple.
The scroll directions, software scroll, and invertDisplay were a bit harder.

I have updated the test_8352B Branch on GitHub. Please try it.


Will do. I’ll report back. Thanks David.

Great job David - this works great. All colors, orientations looks fine, and it seems to work a little more snappier than the original solution i had.

Out of curiosity, where did you order it? 2 weeks sounds impressive!

It took 21 days from order to my front door. From

My record is 9 days from China. Typical 14 days. Worst was probably 35 days.

Are you using a Uno, Mega, Due , … ?
There are conflicts with sharing SPI pins on a Uno.


Using the mega. I can throw it in a uno if you like?


I'm trying to follow your thread here but not getting too far.

I have an open-smart 3.2" TFT LCD Shield (HX8352B) with a Due R3.
From reading your thread, I believe you have a demo working for this configuration.

If this is the case, please could you post step-by-step instructions to get your demo working?

Many thanks in advance


Thanks for the feedback. The Landscape is working in Beta. Fixes will be in the next Release.

I have added a new item to the how_to file. It will appear in the next Release

19. OPEN-SMART Shields have different wiring to regular Uno Shields:
    Edit mcufriend_shield.h:  #define USE_SPECIAL
    Edit mcufriend_special.h: #define USE_OPENSMART_SHIELD_PINOUT
    Edit MCUFRIEND_kbv.cpp:   #define SUPPORT_8352B

Please let me know how you get on.


Hi David,
I have downloaded test_8532B and unzipped.

The first two changes for OpenSmart are OK.

I couldn't find the third line though
Edit MCUFRIEND_kbv.cpp: #define SUPPORT_8352B

Have I downloaded thew correct file?


Hey-ho. I thought that I had removed the test Branch from GitHub when I merged the changes into the Master..

test_8352B should have all the macros defined already. In other words, everything should work immediately.


As I thought. The test_8352B Branch had been deleted. Did you get the correct spelling?

  1. leave IDE
  2. delete whatever MCUFRIEND_kbv library folder
  3. download the jondyson_8352B Branch as a ZIP
  4. install from ZIP.

I have just run an example on a Due clone. Due upload is horrible. Due compile is slow.

The jondyson_8352B Branch works on the Due.


Hello David.

Thanks for making software updates.

But I cant find the download for jondyson_8352B Branch. Could you please help me out. Im new to arduino.

Janis Davidsons.

Go to Github. Select the Branch that you want in left hand box (it defaults to master). Download ZIP from GREEN right hand box.