[TUTO] Adaptateur pour SMEG/NAC/Matrice CAN2010 sur BSI CAN2004

I would like to suggest a feature on the main code to set the MCP2515 crystal oscillator frequency. Something like:

Code:
const byte CAN_FREQ = MCP_16MHZ //or 8mhz for for cheap modules
and
Code:
CAN0.reset();
  CAN0.setBitrate(CAN_SPEED, CAN_FREQ);

CAN1.reset();
  CAN1.setBitrate(CAN_SPEED, CAN_FREQ);

Im using 8mhz modules and this is what i did to get working.
 
  • J'aime
Reactions: VLud

If you have a RT6, noFMUX will not be doing anything useful, it is only useful for SMEG and NAC (with the good calibration).

Your language is probably not switched because the language is restored from EEPROM just after, I pushed an update, set resetEEPROM to true and upload the code one time, then set it back to false and upload the code again (avoid writing on the EEPROM at each startup because it is limited in writing) - You can also switch the language from the CAN2004 Matrix or CAN2010 SMEG / NAC -

@horuscurcino done ;)
 
Dernière édition:

Where i can found pictures or diagram of all connection of that special project i search on net but nothing.... there are CAN-BUS Shield as Master and Slave that connect between their Terminal - CAN_H and CAN_L - IS IT LIKE THIS?

Only you VLud make it possible!
is the picture i attached is ok ?:

Yes. Read the tutorial, one of the two CAN-BUS card must be modified.
 
  • J'aime
Reactions: eptcb

If you have a RT6, noFMUX will not be doing anything useful, it is only useful for SMEG and NAC (with the good calibration).
hehehe thanks! I thought I could access the MATT menu...


Your language is probably not switched because the language is restored from EEPROM just after, I pushed an update, set resetEEPROM to true and upload the code one time, then set it back to false and upload the code again (avoid writing on the EEPROM at each startup because it is limited in writing) - You can also switch the language from the CAN2004 Matrix or CAN2010 SMEG / NAC -
Done! Working...

But I'd like to say thanks for sharing all your hard work and investigation. I'm pretty sure that so many people will take advantage for such information and will be able to do something similar and even beyond what has been discussed here in this thread.
I'd like to be really sincere and say thanks. If you don't mind, let me know if you have PayPal and let know your email to donate some beer to say thanks for sharing all the details and all the hard work. If you have Instagram and don't care, I'd like also to have some friends sharing your reference so you can see some other projects that will come out . All that coding and also CAN protocol translation is not so easy. It is something like your project that enable all the PSA lovers to go beyond and do some extra modifications. A great hello and great thanks for the great work ! Merci!
 
  • J'aime
Reactions: VLud and eptcb


Salut, Je viens de monter NAC HU sur ma Peugeot 607 2005 et ça marche. Dans ma voiture, j'ai le BSI 2004. Tout d'abord, j'ai connecté HU sans adaptateur CAN. Cela fonctionnait, mais certaines options étaient impossibles à voir / à modifier, telles que les paramètres de langue, les paramètres de date / heure.

Ensuite, j'ai construit un adaptateur CAN et tout fonctionne à merveille. Mon concessionnaire Peugeot a utilisé le télécodage du numéro de VIN. Il était surpris que le CNA dans une vieille voiture fonctionne et le fait gratuitement. Maintenant, j'ai acheté (auprès de mon concessionnaire Peugeot également) une caméra de recul et mon revendeur a essayé de la télécoder, mais les options telles que la caméra et les capteurs de stationnement sont bloquées (grisées) dans Diagbox. Il n'a aucune idée de comment utiliser le télécodage pour ces options. Y a-t-il un moyen de le changer?

Un autre problème est l’adaptateur CAN: c’est assez gros, et j’essaie maintenant de projeter une carte avec ESP32 et deux récepteurs CAN. Si je le fais, je le publierai ici.

La dernière chose est le pouvoir. Je l'ai connecté à la sortie BSI, qui s'éteint après 2 minutes d'inactivité. L'avantage de cette solution est un démarrage plus rapide du système et je n'ai pas besoin de minuterie. Maintenant, quand je viens le matin à ma voiture et que j'utilise une télécommande, le système NAC est prêt à être utilisé immédiatement après le changement de contact. Merci les gars pour ce guide, spécialement VLud - vous l'avez très bien fait.

Et enfin désolé pour cette traduction, mais je ne connais pas du tout le français.

-----

Hello,
I just mounted NAC HU in my Peugeot 607 2005 and it works. In my car I have BSI 2004. Firstly I've connected HU without CAN adapter. It was working, but some options wasn't unable to see/change, like Language Settings, Date/Time Settings.

Then I've built CAN adapter and everything works like a charm. VIN Number telecoding did my Peugeot Dealer. He was surpsised, that NAC in old car works and did it free of charge.
Now I've bought (by my Peugeot dealer also) backup camera and my dealer tried to telecoding it, but the options like camera and parking sensors are blocked (grayed out) in Diagbox. He has no idea how to do telecoding for these options. Is there any way to change it?

Another thing is CAN adapter - its quite big and now I'm trying to project PCB with ESP32 and two CAN receivers. If I do it, I will publish it here.

Last thing is power. I've connected it to BSI output, which is shutting down after 2 minutes of inactivity. The advantage of this solution is faster system starting and I do not need any time switch. Now, when I come in the morning to my car and I use remote, the NAC system is ready to use immediately after switching ignition.

Thanks guys for this guide, specially VLud - you did it very good.

And finally sorry for this translation, but I don't know french at all.
Can you post pictures of that adapter. How you connect it.cause it didnt work, i think its something with the program that upload to the device, i read there are some canbus shiled that use d10 instead d9
 

Hi. Could you help me? When compiling the .ino file in the arduino IDE interface, the following errors are presented:

Code:
D:\BIBLIOTECAS\Documentos\Arduino\can-adapter\can-adapter.ino: In function 'void setup()':

D:\BIBLIOTECAS\Documentos\Arduino\can-adapter\can-adapter.ino:156:38: warning: invalid conversion from 'byte {aka unsigned char}' to 'CAN_SPEED' [-fpermissive]

   CAN0.setBitrate(CAN_SPEED, CAN_FREQ);

                                      ^

In file included from D:\BIBLIOTECAS\Documentos\Arduino\can-adapter\can-adapter.ino:10:0:

D:\BIBLIOTECAS\Documentos\Arduino\libraries\arduino-mcp2515/mcp2515.h:468:15: note:   initializing argument 1 of 'MCP2515::ERROR MCP2515::setBitrate(CAN_SPEED, CAN_CLOCK)'

         ERROR setBitrate(const CAN_SPEED canSpeed, const CAN_CLOCK canClock);

               ^

D:\BIBLIOTECAS\Documentos\Arduino\can-adapter\can-adapter.ino:156:38: warning: invalid conversion from 'byte {aka unsigned char}' to 'CAN_CLOCK' [-fpermissive]

   CAN0.setBitrate(CAN_SPEED, CAN_FREQ);

                                      ^

In file included from D:\BIBLIOTECAS\Documentos\Arduino\can-adapter\can-adapter.ino:10:0:

D:\BIBLIOTECAS\Documentos\Arduino\libraries\arduino-mcp2515/mcp2515.h:468:15: note:   initializing argument 2 of 'MCP2515::ERROR MCP2515::setBitrate(CAN_SPEED, CAN_CLOCK)'

         ERROR setBitrate(const CAN_SPEED canSpeed, const CAN_CLOCK canClock);

               ^

D:\BIBLIOTECAS\Documentos\Arduino\can-adapter\can-adapter.ino:167:38: warning: invalid conversion from 'byte {aka unsigned char}' to 'CAN_SPEED' [-fpermissive]

   CAN1.setBitrate(CAN_SPEED, CAN_FREQ);

                                      ^

In file included from D:\BIBLIOTECAS\Documentos\Arduino\can-adapter\can-adapter.ino:10:0:

D:\BIBLIOTECAS\Documentos\Arduino\libraries\arduino-mcp2515/mcp2515.h:468:15: note:   initializing argument 1 of 'MCP2515::ERROR MCP2515::setBitrate(CAN_SPEED, CAN_CLOCK)'

         ERROR setBitrate(const CAN_SPEED canSpeed, const CAN_CLOCK canClock);

               ^

D:\BIBLIOTECAS\Documentos\Arduino\can-adapter\can-adapter.ino:167:38: warning: invalid conversion from 'byte {aka unsigned char}' to 'CAN_CLOCK' [-fpermissive]

   CAN1.setBitrate(CAN_SPEED, CAN_FREQ);

                                      ^

In file included from D:\BIBLIOTECAS\Documentos\Arduino\can-adapter\can-adapter.ino:10:0:

D:\BIBLIOTECAS\Documentos\Arduino\libraries\arduino-mcp2515/mcp2515.h:468:15: note:   initializing argument 2 of 'MCP2515::ERROR MCP2515::setBitrate(CAN_SPEED, CAN_CLOCK)'

         ERROR setBitrate(const CAN_SPEED canSpeed, const CAN_CLOCK canClock);

               ^

What can I be doing wrong?

Thank you and happy 2020 everyone
 

You didn't add the libraries (3 .zip files to add) as written on the tutorial.
When they are added, it appears inside the menu:
wjhW3F6.png
 

pepole can you share some info and pictures who have this work ? we have here in Israel and Brasil pepoles that would like to do it but with no luck...
Vlud is the only one who i know made it possible but he is bussy this time,
we need to know the basic because somthing is worng and we dont know if its the software or the hardware.
we need simple convertion circuit bsi2004 to bsi2010 because we need to hook this to only info screen like in the instument cluster
 

this what we made:
 

Pièces jointes

  • WhatsApp Image 2019-12-23 at 18.09.14.jpeg
    WhatsApp Image 2019-12-23 at 18.09.14.jpeg
    120 Ko · Affichages: 214
  • WhatsApp Image 2019-12-23 at 18.09.17.jpeg
    WhatsApp Image 2019-12-23 at 18.09.17.jpeg
    106.2 Ko · Affichages: 208
  • WhatsApp Image 2019-12-23 at 18.09.17(1).jpeg
    WhatsApp Image 2019-12-23 at 18.09.17(1).jpeg
    71.3 Ko · Affichages: 209
  • WhatsApp Image 2019-12-23 at 18.09.16(1).jpeg
    WhatsApp Image 2019-12-23 at 18.09.16(1).jpeg
    69.3 Ko · Affichages: 212
  • WhatsApp Image 2019-12-23 at 18.09.16(3).jpeg
    WhatsApp Image 2019-12-23 at 18.09.16(3).jpeg
    62.3 Ko · Affichages: 212

You didn't add the libraries (3 .zip files to add) as written on the tutorial.
When they are added, it appears inside the menu:
wjhW3F6.png

Thank you. It worked.

Code:
byte languageNum = 132; // (0x80) FR - If you need EN as default : 132 (0x84)

What is the language code of Portuguese BR? What is the number?

and

How to change to Km / l? The following code didn't work for me.

Code:
bool kmL = true; // km/L statistics instead of L/100

Merci beaucoup
 

Use the latest update I made 29 days ago. "byte languageNum" does not exist anymore and you will be able to set BR as language, and it will probably fix your issue with km/L
 



Super tuto :bien:
J'envisage peut être de me lancer à remplacer mon NG4 de ma C5 II par un SMEG+IV2 ( ça dépendra si madame accepte le budget :ange:) et dans ce cas j'aurais sans doute des questions.
 

Si tu veux mettre un SMEG IV2 il suffit d'en prendre un CAN2004, ça évite d'avoir a faire l'Arduino ;)
 

Ah je n'avais pas vu qu'il en existait en can2004 ( un lien par hasard?).
Du coup ça serait plug n play ou quand même un faisceau adaptateur?
Je pensais à tort que NAC et IV2 c'était la même chose. Du coup je suis un peu perdu, a part la carto TomTom et la reconnaissance vocale sur le NAC qu'est ce qui change?
 

Carplay ET Android Auto, la fluidité, la gratuité de la cartographie.
Ce serait Plug'n play (idéalement prendre un SMEG CAN2004 de C5)
 

Le NAC semble plutôt sympa en effet. Bon après j'aimerais surtout pouvoir utiliser waze et avoir du streaming Bluetooth avec commandes au volant donc apparemment le IV2 ferait bien l'affaire (sauf si je peux avoir un NAC à tarif équivalent bien sûr :sol:).
 

Oui enfin le SMEG est reputé pour avoir un lag sur le Bluetooth qui est vraiment très ennuyant au quotidien
 

Using bosch RCC i found myself unable to change some parameters such as language, date and time and check the vehicle settings. They were grayed out, disabled. Its a kind of degraded mode of the radio. Scanning and scanning and found the ID 361, DLC6, must have its first data block forwarding something above 80 to get these menus fully working. At this moment my CAN2004 car sends "B1" on this [0] block. Is there any way to implement this on the code?

EDIT: by the way, 500 period.
 

ID 361 is sent on my 308 (CAN2010) but not on my RCZ (CAN2004), strange !
Don't know what it is used for

Here is the value I have on my 308:
12 3F FF 3F FF FF FF FF or
00 3F FF 3F FF FF FF FF

What's your full value ?
What is your RCC reference ? Is it a A2 or above ?
 


ID 361 is sent on my 308 (CAN2010) but not on my RCZ (CAN2004), strange !
Don't know what it is used for

Here is the value I have on my 308:
12 3F FF 3F FF FF FF FF or
00 3F FF 3F FF FF FF FF

What's your full value ?
What is your RCC reference ? Is it a A2 or above ?

RCC A2.
My measured values:

CAN2004: 09 04 10 C0 10 38
CAN2010: B1 66 6C 00 00 00

Well, i dont have the official purpose of this value (since we dont have it for any value! hahahaha!) but it does the trick about the settings pages when the first block is equal or over 80.

EDIT:
For some reason since the last revision of this arduino code i cant use diagbox on the telematic. It causes "Communication Error" with the calculator. Without arduino conversion it works normally. Tried with and without "forge CAN2010 messages".
 
Dernière édition:

[CITAÇÃO = "horuscurcino, cargo: 2530064, membro: 114066"] RCC A2.
Meus valores medidos:

CAN2004: 09 04 10 C0 10 38
CAN2010: B1 66 6C 00 00 00

Bem, eu não tenho o objetivo oficial desse valor (já que não o temos por nenhum valor! Hahahaha!), Mas funciona com as páginas de configurações quando o primeiro bloco é igual ou superior a 80.

EDITAR:
Por alguma razão, desde a última revisão deste código do arduino, não posso usar o diagbox no sistema telemático. Causa "Erro de comunicação" com a calculadora. Sem a conversão do arduino, ele funciona normalmente. Tentei com e sem "forjar mensagens CAN2010". [/ QUOTE]



Hello,
In my bench tests, I verified that ID 361 is responsible for enabling the options in MATT color according to the Bytes that are presented to it,
example:
HEX / Bit
81 = 1000001 = parameter + Daylight
B1 = 10110001 = Pair + Start Lighting (30s) + Directional Headlamps + Daylight

However, this changes according to the Firmware configuration.

For ID 361 to take effect it must have 1 more active IDs.

ID: 260 - 7 - 00.04.00.00.00.00.00

I hope this information can help you in your project.
 

ID 260 is related to languages and units, and already treated by this sketch. ID 361 works activating the customization menu but keeps activating and deactivating (blinking) the functions. Perhaps it has some other dependencies or another ECU is overriding the changes. Hope to reveal the necessary codes. Im working on it.
 

ID 260 is related to languages and units, and already treated by this sketch. ID 361 works activating the customization menu but keeps activating and deactivating (blinking) the functions. Perhaps it has some other dependencies or another ECU is overriding the changes. Hope to reveal the necessary codes. Im working on it.

Checks that there is no conflict with RT6 / RNEG. Via diagbox you must disable the parameterization menu options, language, units and time on RT6 / RNEG.

In my car the parameterization menu was activated on RT6 / RNEG, however it was not possible to activate or deactivate any option (blinking) the functions.

When deactivating all parameterization items of the RT6 / RNEG, the parameterization menu appears on the MATT2004 screen, however on MATT2010 with the arduino it does not appear.

I believe the solution is to disable these items from RT6 / RNEG and update the code of the arduino program with ID 361.
 

My car was originally fitted with RD4 radio + multifunction screen. It was removed from the car so at first i believe this settings are not relevant. But i think in the BSI2004 world when the car is fitted with any ECU which changes the "Personalization menu" such as multifunction screen, COMBINE and MATT (UDS protocol) or multimedia system (SMEG, RNEG, RT4) the ID361 (or different ID) is developed by the callibration and enabled/disabled options available on it (changeable via diagnostic software). But BSI2010 generates this ID 361 by itself and its available capabilities and connected ECUs take advantage of it.

By the way in my bench tests changing ID361 values, many settings that were not predicted on my RCC A2 callibration are shown. Proving it handles the "Personalization Menu" alone.
 
  • J'aime
Reactions: caspiu

My car was originally fitted with RD4 radio + multifunction screen. It was removed from the car so at first i believe this settings are not relevant. But i think in the BSI2004 world when the car is fitted with any ECU which changes the "Personalization menu" such as multifunction screen, COMBINE and MATT (UDS protocol) or multimedia system (SMEG, RNEG, RT4) the ID361 (or different ID) is developed by the callibration and enabled/disabled options available on it (changeable via diagnostic software). But BSI2010 generates this ID 361 by itself and its available capabilities and connected ECUs take advantage of it.

By the way in my bench tests changing ID361 values, many settings that were not predicted on my RCC A2 callibration are shown. Proving it handles the "Personalization Menu" alone.

Understand. But how to include the ID361 in the arduino code? This I don't know how to do.
 

I can confirm ID 0x361 (865 in decimal) is responsible for personalization menu which is working with ID 0x260 too, I'm working on it. For now it should be easier not to forward messages on ID 865 from CAN2004 ;)