<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    Shane,<br>
    <br>
    hint: disable logging in the web shell (checkbox in the upper right)
    during command sessions.<br>
    <br>
    Yes, that does look now like you need security access.<br>
    <br>
    The actual key generation can be quite simple. On the VW e-Up et al,
    you simply add a PIN code to the seed:<br>
<a class="moz-txt-link-freetext" href="https://github.com/openvehicles/Open-Vehicle-Monitoring-System-3/blob/master/plugin/v-vweup/ecutoolkit/xvu-ecu.js#L328">https://github.com/openvehicles/Open-Vehicle-Monitoring-System-3/blob/master/plugin/v-vweup/ecutoolkit/xvu-ecu.js#L328</a><br>
    <br>
    …you "just" need to know the PIN codes needed for each device and
    access purpose. These PIN codes are in the service manuals, if you
    can get such for your car they could be worth a look.<br>
    <br>
    Regards,<br>
    Michael<br>
    <br>
    <br>
    <div class="moz-cite-prefix">Am 25.10.21 um 14:36 schrieb Shane @
      Kilve Engineering:<br>
    </div>
    <blockquote type="cite"
      cite="mid:B7517E34-FD3D-4843-B6A5-5BDC1E5FA510@kilve-engineering.co.uk">
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      Hi Michael, 
      <div class=""><br class="">
      </div>
      <div class="">I have now switched to obdii requests</div>
      <div class=""><br class="">
      </div>
      <div class="">Have now worked out the commands need to be sent
        quickly </div>
      <div class=""><br class="">
      </div>
      <div class="">I now get </div>
      <div class="">
        <pre class="c-mrkdwn__pre" data-stringify-type="pre" style="box-sizing: inherit; margin-top: 4px; margin-bottom: 4px; padding: 8px; --saf-0:  rgba(var(--sk_foreground_low,29,28,29),0.13); line-height: 1.50001; font-variant-ligatures: none; white-space: pre-wrap; overflow-wrap: break-word; word-break: normal; tab-size: 4; border: 1px solid var(--saf-0); border-top-left-radius: 4px; border-top-right-radius: 4px; border-bottom-right-radius: 4px; border-bottom-left-radius: 4px; background: rgba(var(--sk_foreground_min,29,28,29),0.04); counter-reset: list-0 0 list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; orphans: 2; widows: 2; text-decoration-thickness: initial; font-family: Monaco, Menlo, Consolas, "Courier New", monospace !important;">OVMS# obdii can1 request device 735 7b5 1003
735[7b5] 1003: Response:
00 32 01 f4                                     | .2..            
I (57401468) webserver: HTTP POST /api/execute
I (57401478) webcommand: HttpCommandStream[0x3f8b52a0]: 3499452 bytes free, executing: obdii can1 request device 735 7b5 2ee01040ea85ce
OVMS# obdii can1 request device 735 7b5 2ee01040ea85ce
735[7b5] 2ee01040ea85ce: ERROR: request failed with response error code 33 securityAccessDenied</pre>
        <div class=""><br class="">
        </div>
        <div class="">So obviously do need security so have now done a </div>
        <div class="">
          <pre class="c-mrkdwn__pre" data-stringify-type="pre" style="box-sizing: inherit; margin-top: 4px; margin-bottom: 4px; padding: 8px; --saf-0:  rgba(var(--sk_foreground_low,29,28,29),0.13); line-height: 1.50001; font-variant-ligatures: none; white-space: pre-wrap; overflow-wrap: break-word; word-break: normal; tab-size: 4; border: 1px solid var(--saf-0); border-top-left-radius: 4px; border-top-right-radius: 4px; border-bottom-right-radius: 4px; border-bottom-left-radius: 4px; background: rgba(var(--sk_foreground_min,29,28,29),0.04); counter-reset: list-0 0 list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; orphans: 2; widows: 2; text-decoration-thickness: initial; font-family: Monaco, Menlo, Consolas, "Courier New", monospace !important;">OVMS# obdii can1 request device 735 7b5 1003
735[7b5] 1003: Response:
00 32 01 f4                                     | .2..            
I (64032248) webserver: HTTP POST /api/execute
I (64032258) webcommand: HttpCommandStream[0x3f8b5268]: 3499932 bytes free, executing: obdii can1 request device 735 7b5 2701
OVMS# obdii can1 request device 735 7b5 2701
735[7b5] 2701: Response:
3a 07 4e 87<span style="color: rgb(209, 210, 211);" class="">                                     | :.N.            </span></pre>
          <div class=""><br class="">
          </div>
        </div>
        <div class="">And get a seed back :-)</div>
        <div class=""><br class="">
        </div>
        <div class="">But without access to a services device I guess
          its going to be hard to work out the encryption !</div>
        <div class=""><br class="">
        </div>
        <div class="">
          Regards<br class="">
          Shane </div>
        <div>
          <blockquote type="cite" class="">
            <div class="">On 25 Oct 2021, at 12:46, Michael Balzer <<a
                href="mailto:dexter@expeedo.de" class=""
                moz-do-not-send="true">dexter@expeedo.de</a>> wrote:</div>
            <br class="Apple-interchange-newline">
            <div class="">
              <div class="">Shane,<br class="">
                <br class="">
                not sure why you don't use the OBD request command for
                this instead of manual frame assembly.<br class="">
                <br class="">
                However, regarding writes to PIDs:<br class="">
                <br class="">
                - You may need another session type. Most cars now won't
                accept 03 as a session with PID write access, but expect
                some custom session type to allow that. The NRC 7F means
                "serviceNotSupportedInActiveSession" (btw: the OBD
                command translates the most common NRCs for you), which
                is a hint you need another session.<br class="">
                <br class="">
                - You normally don't need tester presence if you send
                the request shortly after the session init. Most devices
                will keep a session logged in for at least 60 seconds,
                custom session types may expire faster. Use a script if
                in doubt, or start a tester presence signal using the
                "re obd tester" subcommand.<br class="">
                <br class="">
                - I doubt you do, but if (!) you really need security
                access (request 27), that will normally work
                differently. See section 9.4 in the ISO document: you
                need to create a key from the seed given by the server.
                So you need to know how to calculate the key, which
                normally involves some non-obvious encryption method.
                You may be able to derive the method from looking at CAN
                logs of a service device gaining access.<br class="">
                <br class="">
                I would try other session types first.<br class="">
                <br class="">
                Hint: you can use a script to walk through a range of
                session types and try the write after each one.<br
                  class="">
                <br class="">
                See: <a
href="https://docs.openvehicles.com/en/latest/userguide/scripting.html#ovmsvehicle"
                  class="" moz-do-not-send="true">https://docs.openvehicles.com/en/latest/userguide/scripting.html#ovmsvehicle</a>
                → OvmsVehicle.ObdRequest(arguments)<br class="">
                <br class="">
                Be aware that's a synchronous call, so don't let the
                loop run for longer than 60 seconds to avoid the
                watchdog.<br class="">
                <br class="">
                Regards,<br class="">
                Michael<br class="">
                <br class="">
                <br class="">
                Am 25.10.21 um 11:06 schrieb Shane @ Kilve Engineering:<br
                  class="">
                <blockquote type="cite" class="">Hi all,<br class="">
                  <br class="">
                  Can anyone give me some help trying to write data to
                  the TPMS ecu?<br class="">
                  <br class="">
                  I can read for example FL tyre using<br class="">
                  can can1 tx standard 735 03 22 e0 10 00 00 00 00 (FL
                  id e010 FR e020 etc.)<br class="">
                  And get back 07 62 e0 10 80 2d b9 d4<br class="">
                  <br class="">
                  I have confirmed that the tyre id is "80 2d b9 d4”
                  with a tmps reader wireless at the wheel<br class="">
                  <br class="">
                  I have then done a session control with<br class="">
                  can can1 tx standard 735 02 10 03 00 00 00 00 00<br
                    class="">
                  And get back 06 50 03 00 32 01 f4 00<br class="">
                  So that looks ok ?<br class="">
                  <br class="">
                  So I then try<br class="">
                  can can1 tx standard 735 07 2e e0 10 40 ea 85 ce (the
                  new id)<br class="">
                  And get back 03 7f 2e 7f<br class="">
                  <br class="">
                  So ive tried issuing<br class="">
                  can can1 tx standard 735 02 27 01 00 00 00 00 00<br
                    class="">
                  <br class="">
                  But get no response??<br class="">
                  <br class="">
                  <br class="">
                  any pointers?<br class="">
                  p.s. do I also need to be sending tester present to
                  the ecu? Or does the fact im doing a session control
                  take care of this?<br class="">
                  <br class="">
                  <br class="">
                  Regards<br class="">
                  Shane<br class="">
                  _______________________________________________<br
                    class="">
                  OvmsDev mailing list<br class="">
                  <a href="mailto:OvmsDev@lists.openvehicles.com"
                    class="" moz-do-not-send="true">OvmsDev@lists.openvehicles.com</a><br
                    class="">
                  <a class="moz-txt-link-freetext" href="http://lists.openvehicles.com/mailman/listinfo/ovmsdev">http://lists.openvehicles.com/mailman/listinfo/ovmsdev</a><br
                    class="">
                </blockquote>
                <br class="">
                -- <br class="">
                Michael Balzer * Helkenberger Weg 9 * D-58256 Ennepetal<br
                  class="">
                Fon 02333 / 833 5735 * Handy 0176 / 206 989 26<br
                  class="">
                <br class="">
                <br class="">
                _______________________________________________<br
                  class="">
                OvmsDev mailing list<br class="">
                <a href="mailto:OvmsDev@lists.openvehicles.com" class=""
                  moz-do-not-send="true">OvmsDev@lists.openvehicles.com</a><br
                  class="">
                <a class="moz-txt-link-freetext" href="http://lists.openvehicles.com/mailman/listinfo/ovmsdev">http://lists.openvehicles.com/mailman/listinfo/ovmsdev</a><br
                  class="">
              </div>
            </div>
          </blockquote>
        </div>
        <br class="">
      </div>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <pre class="moz-quote-pre" wrap="">_______________________________________________
OvmsDev mailing list
<a class="moz-txt-link-abbreviated" href="mailto:OvmsDev@lists.openvehicles.com">OvmsDev@lists.openvehicles.com</a>
<a class="moz-txt-link-freetext" href="http://lists.openvehicles.com/mailman/listinfo/ovmsdev">http://lists.openvehicles.com/mailman/listinfo/ovmsdev</a>
</pre>
    </blockquote>
    <br>
    <pre class="moz-signature" cols="72">-- 
Michael Balzer * Helkenberger Weg 9 * D-58256 Ennepetal
Fon 02333 / 833 5735 * Handy 0176 / 206 989 26</pre>
  </body>
</html>