Sync 3 APIM Bench Test Project Completed

I can program SYNC 3 APIMs manufactured in 2019 and 2020 using your STM32 CAN bus simulator, but the screen remains blank. It even doesn’t display Ford logo when I turn it on.

That seems strange… Are you saying the screen turns on with it in the car but not with the simulator?

Yes! I am having the same issue. However when I test it in my 2017 Mustang it works just fine. I may also note that I have a older model(Gen1) sync3 and it works just fine on the bench other than display brightness. I’m rather new to this but I am thinking it is just a can bus signal/line issue.

Hi, i have compilation problem

In file included from src\main.cpp:43:
.pio\libdeps\bluepill_f103c6\eXoCAN/eXoCAN.h:146:41: error: ‘u_int32_t’ has not been declared
146 | void filter32Init(int bank, int mode, u_int32_t a, u_int32_t b); //32b filters
| ^~~~~~~~~
.pio\libdeps\bluepill_f103c6\eXoCAN/eXoCAN.h:146:54: error: ‘u_int32_t’ has not been declared
146 | void filter32Init(int bank, int mode, u_int32_t a, u_int32_t b); //32b filters
| ^~~~~~~~~
.pio\libdeps\bluepill_f103c6\eXoCAN/eXoCAN.h:158:35: error: ‘u_int32_t’ has not been declared
158 | void filterMask32Init(int bank, u_int32_t id = 0, u_int32_t mask = 0);
| ^~~~~~~~~
.pio\libdeps\bluepill_f103c6\eXoCAN/eXoCAN.h:158:53: error: ‘u_int32_t’ has not been declared
158 | void filterMask32Init(int bank, u_int32_t id = 0, u_int32_t mask = 0);
| ^~~~~~~~~
.pio\libdeps\bluepill_f103c6\eXoCAN/eXoCAN.h:159:35: error: ‘u_int32_t’ has not been declared
159 | void filterList32Init(int bank, u_int32_t idA = 0, u_int32_t idB = 0); // 32b filters
| ^~~~~~~~~
.pio\libdeps\bluepill_f103c6\eXoCAN/eXoCAN.h:159:54: error: ‘u_int32_t’ has not been declared
159 | void filterList32Init(int bank, u_int32_t idA = 0, u_int32_t idB = 0); // 32b filters
| ^~~~~~~~~
*** [.pio\build\bluepill_f103c6\src\main.cpp.o] Error 1
In file included from .pio\libdeps\bluepill_f103c6\eXoCAN\eXoCAN.cpp:1:
.pio\libdeps\bluepill_f103c6\eXoCAN\eXoCAN.h:146:41: error: ‘u_int32_t’ has not been declared
146 | void filter32Init(int bank, int mode, u_int32_t a, u_int32_t b); //32b filters
| ^~~~~~~~~
.pio\libdeps\bluepill_f103c6\eXoCAN\eXoCAN.h:146:54: error: ‘u_int32_t’ has not been declared
146 | void filter32Init(int bank, int mode, u_int32_t a, u_int32_t b); //32b filters
| ^~~~~~~~~
.pio\libdeps\bluepill_f103c6\eXoCAN\eXoCAN.h:158:35: error: ‘u_int32_t’ has not been declared
158 | void filterMask32Init(int bank, u_int32_t id = 0, u_int32_t mask = 0);
| ^~~~~~~~~
.pio\libdeps\bluepill_f103c6\eXoCAN\eXoCAN.h:158:53: error: ‘u_int32_t’ has not been declared
158 | void filterMask32Init(int bank, u_int32_t id = 0, u_int32_t mask = 0);
| ^~~~~~~~~
.pio\libdeps\bluepill_f103c6\eXoCAN\eXoCAN.h:159:35: error: ‘u_int32_t’ has not been declared
159 | void filterList32Init(int bank, u_int32_t idA = 0, u_int32_t idB = 0); // 32b filters
| ^~~~~~~~~
.pio\libdeps\bluepill_f103c6\eXoCAN\eXoCAN.h:159:54: error: ‘u_int32_t’ has not been declared
159 | void filterList32Init(int bank, u_int32_t idA = 0, u_int32_t idB = 0); // 32b filters
| ^~~~~~~~~
.pio\libdeps\bluepill_f103c6\eXoCAN\eXoCAN.cpp:129:41: error: ‘u_int32_t’ has not been declared
129 | void eXoCAN::filterList32Init(int bank, u_int32_t idA, u_int32_t idB) //32b filters
| ^~~~~~~~~
.pio\libdeps\bluepill_f103c6\eXoCAN\eXoCAN.cpp:129:56: error: ‘u_int32_t’ has not been declared
129 | void eXoCAN::filterList32Init(int bank, u_int32_t idA, u_int32_t idB) //32b filters
| ^~~~~~~~~
.pio\libdeps\bluepill_f103c6\eXoCAN\eXoCAN.cpp:135:41: error: ‘u_int32_t’ has not been declared
135 | void eXoCAN::filterMask32Init(int bank, u_int32_t id, u_int32_t mask) //32b filters
| ^~~~~~~~~
.pio\libdeps\bluepill_f103c6\eXoCAN\eXoCAN.cpp:135:55: error: ‘u_int32_t’ has not been declared
135 | void eXoCAN::filterMask32Init(int bank, u_int32_t id, u_int32_t mask) //32b filters
| ^~~~~~~~~
.pio\libdeps\bluepill_f103c6\eXoCAN\eXoCAN.cpp:140:47: error: ‘u_int32_t’ has not been declared
140 | void eXoCAN::filter32Init(int bank, int mode, u_int32_t a, u_int32_t b) //32b filters
| ^~~~~~~~~
.pio\libdeps\bluepill_f103c6\eXoCAN\eXoCAN.cpp:140:60: error: ‘u_int32_t’ has not been declared
140 | void eXoCAN::filter32Init(int bank, int mode, u_int32_t a, u_int32_t b) //32b filters
| ^~~~~~~~~
*** [.pio\build\bluepill_f103c6\lib89b\eXoCAN\eXoCAN.cpp.o] Error 1

Here is the fix, open the eXoCAN.h file (right click it main.cpp and select “goto definition”):

#include <eXoCAN.h>

add this to the top of it, after:

#include <arduino.h>
#include <cstdint>
#define u_int8_t uint8_t
#define u_int32_t uint32_t

save, recompile

note: if you do a clean it will wipe this change out
I will try and get it fixed in the eXoCAN library.

Perfect. Thank You. Now compilation OK.
I’ll have the SYNC 3 unit next week and test it out :slight_smile:

Thank you very much for your help

1 Like

Yes, some 2019 APIMs and almost all 2020 APIMs don’t display anything on the screen with this STM32 CAN bus simulator.

I have a spare bench test that I built for someone. If anyone needs it, I’m selling it for $160. You can use it for Sync 3-4 and use FORScan.

Depending on the specs of this “bench” $160 seems way over priced but maybe it’s more expensive over there.

1 Like

What messages are you sending for Sync 4? Do you want to give me the code snippet so I can update my repository with the correct Sync 4 codes?

Considering fitting my SYNC 4 to my Fiesta didn’t require any modification of any other modules, surely it’s the same CANBus packets/sequence as SYNC 3?

I have no Sync 4 to test with, but from user feedback the same can bus messages do not seem to work for it.

But my Fiesta 2019 booted SYNC 4 without issue, perhaps SYNC 4 and SYNC 4a are different CAN messages.

Oh that is good to know.

sure ill send you the file are you using arduino r3 for the the bench test?

it should be the same msg i tested both 4 and 4a and it works with no issues

Good stuff. Thanks for testing it.

Just curious, why is this? Would be interesting to address this issue. Perhaps it has something to do with the new drivers in the 2020+ displays?

1 Like

I don’t think it’s a display driver issue, because same APIM and screen works fine in my 2013 Ford focus.

Got this figured out I’m pretty sure. Haven’t tried it with a 2020+ Display but have used a 2021 and 2022 APIM. Originally I believed the problem was with the AsBuilt data(when using this emulator), however I have made a few changes to my Arduino projects code which now allows me to get any display/Apim configuration to turn on. Except on sync 3.4 the display has brightness issues. Assuming a Canbus message or something related is missing.

Note: I am using a Arduino Based Can-bus Emulator which may be a bit different.