LIN bus Audi

Enkele dagen geleden werd ik onprettig verrast toen ik terugkwam uit de supermarkt. Er was een korte hevige stortbui geweest en de zetels en het interieur van mijn auto stonden zeiknat, omdat het dak was blijven open staan. Blijkbaar is "auto rain closing" een feature die Audi, in tegenstelling tot andere merken, niet aanbiedt... De auto (A4 B8 model 2013) is voorzien van een regensensor, dus dacht ik om die functie gewoon eventjes zelf aan te zetten. Maar dat blijkt toch niet mogelijk. Reden: de wagen heeft twee aparte BCM's die elk via LIN hun eigen slaves aansturen. De regensensor (G397) hangt via LIN aan J519 (de BCM aan de stuurkolom). De sluitfunctie van het open dak hangt via een andere LIN bus aan J393 (de andere BCM). Overigens valt het open dak, net als de ramen, wel te sluiten door lang op de sluitknop van de afstandsbediening te drukken. J393 vertelt dan aan de vier deurcontrollers dat ze de ramen moeten dicht doen, en geeft ook aan J245 (de controller van het schuifdak) bevel om te sluiten.

Maar de regensensor kan dus niet praten tegen de controller voor het dak. Beide LIN bussen passeren wel vlakbij elkaar ter hoogte van het plafondlampje. Dus dacht ik aan de volgende oplossing.
Ik zet een soort multiplexer tussen master J393 (BCM 2) en slave J245 (dak). In normale toestand blijven die met elkaar verbonden. Zodra ik vaststel dat het regent (via de reeds aanwezige regensensor of in het slechtste geval via een aparte DHT22 vochtsensor of iets dergelijks), hang ik J245 aan een aparte microcontroller die het commando om te sluiten geeft. Dit commando kan ik gemakkelijk opslaan met een logic analyser en dan door een PIC of zo laten genereren.
Het tweede deel van het verhaal is gelijkaardig. Zodra het contact afgezet wordt (klem 15 valt naar massa), heeft de regensensor niks zinnig meer te melden aan J519 (die op zijn beurt verder via LIN de ruitenwissers aanstuurt). Op dat moment schakel ik de LIN bus van slave G397 (regensensor) over naar een microcontroller. Dit is wel complexer, want nu moet ik weten hoe ik deze regensensor moet pollen naar de aanwezigheid van regen en hoe ik zijn antwoord moet interpreteren. Overigens: deze sensor meet ook het omgevingslicht, dus onder normale omstandigheden zal hij daar ook over ondervraagd worden en op antwoorden. Waarschijnlijk is het zelfs nog complexer en wordt het antwoord niet verstuurd als 1 bit (droog/nat), maar als een waarde in functie van hoe nat de voorruit is.

Heeft iemand hier ervaring mee? Zo'n regensensor pollen en iets met het antwoord doen? Kan je zomaar 'bruutweg' de communicatie tussen master en slave verbreken en die slave met een nieuwe master verbinden? Of bestaan er hier kant-en-klare oplossingen voor?

Shiptronic

Overleden

Ik heb zo 1,2,3 geen oplossing voor je, maar ga dit topic met wel even volgen.
heb al wel eens een link gepost over LIN protocol. ff zoeken

[edit] gevonden , misschien heb er iets aan : https://www.circuitsonline.net/forum/file/23943

Wie de vraag stelt, zal met het antwoord moeten leren leven.
Hensz

Golden Member

Op 23 juli 2017 23:52:48 schreef faan:
Kan je zomaar 'bruutweg' de communicatie tussen master en slave verbreken en die slave met een nieuwe master verbinden?

Lijkt me niet. Als ik ontwerper was zou ik in zo'n geval direct alles dicht en op slot doen, weigeren te starten, het alarm laten loeien, etc. Iemand is jou als systeem aan het saboteren en dan zou je als systeem niet reageren?

Don't Panic!
maartenbakker

Golden Member

Waarom? Dan zou bij een simpel defect of storing de auto opeens onbruikbaar zijn. Ik ken net als jij het protocol niet, maar als het om eenrichtingscommunicatie gaat of communicatie die de andere master niet verwacht en ook niet ziet, dan lijkt de oplossingsrichting me realistisch om te onderzoeken. Het zou bijvoorbeeld kunnen dat de slave na het commando nog een of andere bevestiging vraagt, in het meest extreme geval met encryptie, maar als die uitblijft hoeft hij niets anders te doen dan niets.

www.elba-elektro.nl | "The mind is a funny thing. Sometimes it needs a good whack on the side of the head to jar things loose."

Als het kontakt uit staat, zijn bijna alle modules in slaapstand. Er worden dan geen metingen gedaan. Dat maakt de zaak nog wat gecompliceerder. Je zou dus op regelmatige tijdstippen de modules moeten wekken, een "regenmeting" doen, en dan eventueel reageren, en dan alle modules terug laten slapen. Lijkt mij een hopeloze zaak, tenzij dat je als software ing. bij audi werkt.(maar dan heb je al genoeg aan je hoofd met sjoemelsoftware...)

Je moet een microcontroller hebben met twee LIN-interfaces. Die laat je luisteren op bus 1 voor een commando en een trigger geven op bus 2.

Moet niet zo heel moeilijk zijn denk ik?

@RP6conrad: Maar je kan toch checken op de regenmelding-poll? Ik neem aan dat dit wel iets dat periodiek wordt gechecked of iets is dat de regensensor pusht op de bus.

Zou ook kunnen dat de regensensor direct op de ruitenwissercontroller zit en niets op de bus doet.

mel

Golden Member

Je kan natuurlijk ook alles dichtdoen als je de auto verlaat.... :+

u=ir betekent niet :U bent ingenieur..
evelo

Golden Member

Of via de website van buienradar de kans op regen in de gaten houden :)

Zowel de CAN als de LIN bus gaan na enige tijd in rust behoudens enkele stuurapparaten. Als je de bus wakker houdt, staat je auto binnen een dag met een lege accu. Ook worden er hashes meegestuurd en berichten gecodeerd.

Ik denk dat de laatste twee berichten de beste tip zijn. Anders staat je auto vol water ook nog eens boordevol storingen. Zodra er aan de bus gerommeld wordt, zal hij ook niet meer willen starten (onderlinge vrijgave regelapparaten).

Wat theoretisch wel zou kunnen is met een 2e regen of vocht sensor via een controller de sluitcode op de can-bus zetten.
Dat moet dan op de bus van J519 of J362 zijn.

Automotive engineer - www.easy-tech.nl
Hensz

Golden Member

Op 24 juli 2017 01:47:44 schreef maartenbakker:
Waarom? Dan zou bij een simpel defect of storing de auto opeens onbruikbaar zijn.

Het is dan ook geen simpel defect als ALLE communicatie met je devices ineens uitvalt en niet snel hersteld wordt. Het sluiten van het dak duurt ff en ik neem aan dat TS niet alleen het commando wil geven om het dak te sluiten, maar ook bevestiging wil wanneer het dicht is.
Goeie kans dat allerlei aangesloten apparaten ook de kluts kwijt raken als ze niet op tijd gepollt of geserviced worden.

Don't Panic!

@Paul Welther: Wanneer ik door de regensensor (of een andere vochtsensor) het sluitcommando aan J393 (die ramen en sloten aanstuurt) geef, dan riskeer ik dat de auto zichzelf afsluit als het begint te druppelen. Denk bijv aan een tankstop op reis en het begint te regenen...
Ik wil dus echt in de LIN-bus naar het schuifdak mijn sluit-commando injecteren. En dus niet de sloten bedienen. Misschien in tweede instantie ook de vier ramen. Daar ligt het iets moeilijker: in beide voordeuren zit een controller die via _CAN_ aan de comfort-bus hangt. Elke voordeur-controller stuurt dan via LIN de betreffende deur achteraan aan.

Ondertussen ben ik er al een beetje uit hoe ik op LIN-niveau de zaak ga aanpakken. Per LIN-draad waarop ik een 'man-in-the-middle attack' wil uitvoeren, heb ik twee LIN-transceivers nodig die kant en klaar te koop zijn. (Farnell biedt o.a. NXP TJA1027 en Microchip MCP2003 aan.) Eerst ga ik de 'application note'-schakeling twee keer nabouwen: eens als master en eens als slave. Mijn nieuwe slave aan de master controller van Audi; mijn home-brew master verbind ik met de slave controller van het (Webasto) open dak. RX en TX overkruisen en dit zou compleet transparant moeten werken. Indien niet, even in het haar krabben en mijn huiswerk opnieuw maken...

Ik bestel alvast mijn knutselgerief en enkele Schmartboards om die SIOC8 chips op mijn breadboard te kunnen zetten. En dan laat ik weten hoe ver ik er mee kom. Als er iemand weet welk type de connector op de foto is (liefst zowel het mannetje als het vrouwtje) dan zou ik super blij zijn... Dat vermijdt knip-en-plak-werk.

Staat op de schema's als T6e, vlakbij J245 (schijfdak) en J394 (voor het gordijntje)

Volgende stap is er een Arduino tussen stoppen die gewoon RX van de ene aan TX van de andere doorgeeft, totdat ik bijv op een knopje druk. And then the magic should happen. Maar dat gaat zeker nog even duren...

@Mel (pun intended): Foei, dan wordt er weeral niks geknutseld! :-)

maartenbakker

Golden Member

Op 24 juli 2017 22:40:00 schreef Hensz:
[...]
Het is dan ook geen simpel defect als ALLE communicatie met je devices ineens uitvalt en niet snel hersteld wordt. Het sluiten van het dak duurt ff en ik neem aan dat TS niet alleen het commando wil geven om het dak te sluiten, maar ook bevestiging wil wanneer het dicht is.
Goeie kans dat allerlei aangesloten apparaten ook de kluts kwijt raken als ze niet op tijd gepollt of geserviced worden.

Dan zou er op dat korte moment communicatie met alle aangesloten apparaten zijn, maar ik lees het als dat alleen de verbinding tussen twee verder gescheiden netwerken heel even gekaapt wordt. Je wilt niet dat je auto in een onbestuurbare kerstboom verandert als er een foutje optreedt in het comfort-gedeelte.

www.elba-elektro.nl | "The mind is a funny thing. Sometimes it needs a good whack on the side of the head to jar things loose."
Diamon

Golden Member

Heb je al gekeken of dit niet te programmeren valt met VCDS (VagComDiagnosticSystem) van Ross-Tech?
Net even snel gezocht, je zou https://www.youtube.com/watch?v=aX5sFG8BwBA kunnen proberen.

Waar woon je van ergens?. Ben in het bezit van een VCDS kabel/software (origineel).

Die connectors kan je vaak als reparatie set bij de dealer bestellen zo doe ik dat ook met speciale dingen.
Ben wel benieuwd of een en ander gaat werken.

Automotive engineer - www.easy-tech.nl

@Diamon: Het is geen Scirocco. En ook geen Golf of A3, maar een A4 en die deelt bijna niks van elektronica met de eerder vernoemde. Was het wel zo geweest, dan was de klus al geklaard met mijn VCDS. (Zoek gerust overal op de zoektermen Audi A4 B8 8K2 en rain closing. Je zult van een kale reis terugkeren. Bij VW lukt rain closing wel omdat men daar slechts 1 BCM inbouwt die alles regelt.) Ik heb ongeveer 15 jaar met Golfjes met diagnosestekker gereden en er veel bij geleerd. Maar in deze wagen heb ik me eigenlijk nog nooit verdiept. Alles heeft ondertussen ook een enorme evolutie doorgemaakt tegenover die eenvoudige modules die destijds aan een K-lijn hingen.
@Paul: Ben ook benieuwd. Normaal gezien levert Farnell morgen mijn goodies, maar ik ben er vanaf eind deze week even tussenuit. En dan ga ik waarschijnlijk eerst nog met KiCad een PCBtje ontwerpen.
Zou de magazijnier bij de VW/Audi dealer op basis van mijn beschrijving en de foto de juiste connectoren (en bijhorende pinnen - of "Reparturleitungen") kunnen opzoeken?

Aan de hand van de stekker locatie (dak) moet het te vinden zijn.

Automotive engineer - www.easy-tech.nl
Shiptronic

Overleden

Ik vind wel jammer dat je nooit de losse connector met losse contacten krijgt, maar altijd met een stuk gele kabel eraan die je dan aan de kabelboom moet zetten.

Wie de vraag stelt, zal met het antwoord moeten leren leven.

Ja dat is inderdaad tobben, het wordt dan meteen een knoei boel.
Rick donkers heeft tegenwoordig een aardige voorraad van lossen pennen die heb ik inmiddels ook maar.
Of anders de pennen bij een Bosch dealer bestellen maar dat is duur.

Automotive engineer - www.easy-tech.nl
Arco

Special Member

Voor 'inbreken' op serieele verbindingen gebruik ik meestal een pic met 2 of meer UARTS, welke ik dan tussen de verbinding in zet.
Als er via één van de UARTS iets binnenkomt, wordt dat (eventueel na modificatie) doorgestuurd via de andere UART. Je kunt zo ook dingen tegenhouden. Dit werkt uitstekend.

Aangezien de LIN bus zo te zien een kruising tussen I2C en RS232 is, zal het daar ook wel mee werken.

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

Op 25 juli 2017 22:27:54 schreef Shiptronic:
Ik vind wel jammer dat je nooit de losse connector met losse contacten krijgt, maar altijd met een stuk gele kabel eraan die je dan aan de kabelboom moet zetten.

Die kun je los krijgen bij de dealer.
Een beetje welwillende dealer verkoopt je ook het VAS gereedschap om de stekkers en contacten te wisselen/knijpen/etc.

Shiptronic

Overleden

mij is het niet gelukt , ook niet na aandringen, de bewuste connector werd alleen geleverd met de gele draden er al aan :( toen ik vroeg waarom was het antwoord : de meesten hebben niet het goede gereedschap om ze te monteren. Mij reactie , dat zegt meer over VAG dealers dan mijn werkplaats :)

Wie de vraag stelt, zal met het antwoord moeten leren leven.

Dat is inderdaad de ene variant. Dat heet een reparatieset voor een kabelboom.

De andere variant (die staat gewoon in mijn minder legale ETKA en heb ik voor mijn auto al vaker in diverse vormen moeten bestellen) heet een los contacthuis voor stekker. De contacten en eventueel de rubbertjes moet je dan ook nog apart bestellen. Die kan je in verschillende soorten en maten krijgen.

Nee, het project is nog geen stille dood gestorven. Door vakantie en de wachttijd voor de PCB's heeft het wel even geduurd...
Ondertussen twee printjes in de reflow oven gedaan. Eentje met de Atmega328 er op en eentje zonder, maar gewoon met de RX en TX van de LIN transceivers gekruist aangesloten.
De connectorhuizen (male en female) en alle nodige pinnen heb ik ondertussen ook bij de dealer gehaald.

Eerste stap gaat dus zijn om de 'LIN-repeater' zonder microcontroller via een kort draadboompje (dat ik op de plaats van de huidige verbinding kan er tussen klikken) aan te sluiten. En kijken of het dan nog werkt - wat ik wel verwacht.

Volgende stap is kijken welke commando's het sluiten van het open dak en het gordijntje triggeren. Bus Pirate gebruiken? Of zijn er betere tools?
Uiteindelijk zou ik dan een Sketch schrijven die niet meer doet dan RX aan TX doorgeven en omgekeerd, plus het uitsturen van de sluit-commando's als de vochtmeting daar aanleiding toe geeft.

Ik heb voor de sensor jammer genoeg slechts 1 IO-pin van de Atmega naar buiten gebracht, dus moet ik nog ergens een DHT11 of andere 1-wire vochtsensor zien te vinden. Wel blij met de keuze van die Atmega, omdat er vast wel Arduino libs te vinden zijn.

Woensdag heb ik een dagje vrij en gaat het wat minder prettig weer zijn, dus misschien knutselen we dan verder...

Is het gebruiken van de regensensor van de auto een optie? Scheelt je een extra sensor. Net als t gordijntje en het dak zit die volgen mij op het comfortregelapparaat.

*edit* zag dat iemand dat al voorgesteld had.

[Bericht gewijzigd door Semtexx op maandag 4 september 2017 19:32:54 (13%)