<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    Hi Mark,<br>
    <br>
    Of course.  I'm under no illusion that the obd2ecu feature would be
    a high-volume product.  I'm just concerned about how Tesla, in
    particular, or any manufacturer in general, will react to a product
    that interacts in a demonstrated negative way with the vehicle's
    operation.  We already have Tesla telling their service centers that
    OVMS is potentially the cause of my 1144 / 1146 alerts, for
    example.  If they start seeing this sort of behavior (VMS crashing),
    the fallout could be severe, where they could refuse all service on
    the vehicle.  In my opinion, OVMS must provide a strict firewall
    between the car and anything we attach to it, and by feeding the
    other two CAN buses through from one connector to the other, we've
    removed all protection.  The result was spectacularly not good.<br>
    <br>
    I guess "snip snip" will probably work, if it's well documented.  If
    the answer is documentation, how do we get the word out?  Two
    options; kill CAN 3 to the car and lose the future ESS metrics, but
    leave the OBDII pigtail as-is; probably the 90% solution.  Or kill
    CAN2 to the car and make a custom OBDII pigtail.  But I would
    strongly urge anyone using the obd2ecu feature to fully isolate the
    attached device from the car's buses, even if they seem to be
    getting along.<br>
    <br>
    I'm Ok on the speed parameter.  I wasn't seeing any speed
    negotiation in my testing, but I also have a fairly small sample of
    devices here.  It will take me some time to re-create the build
    environment here, as I haven't been keeping it up to date.  Right
    now I'm trying to get my car back on the road (failed PEM Fan
    connector).  Parts for the next steps arrive today.  <br>
    <br>
    Greg<br>
    <br>
    <br>
    <div class="moz-cite-prefix">Mark Webb-Johnson wrote:<br>
    </div>
    <blockquote type="cite"
      cite="mid:65F496DD-232F-4AF9-BF02-C83EE568A503@webb-johnson.net">
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      Greg,
      <div class=""><br class="">
      </div>
      <div class="">
        <blockquote type="cite" class="">
          <div text="#000000" bgcolor="#FFFFFF" class="">How do we make
            this "Layman safe" out-of-the-box</div>
        </blockquote>
        <br class="">
      </div>
      <div class="">The issue is one off quantity. There simply aren’t
        enough users of the HUD system to make it economically feasible
        to have custom cables for everyone (and to cripple the 99.9% of
        users who don’t use the functionality by removing support for
        one of their CAN buses). The manufacturers I deal with in china
        have a MOQ of about 100 for custom hard-wired cables. We have
        sold about 20 HUD cables in the past year or two (leaving the
        project with 80 unused in stock). It would be worse if we had to
        make two or three different variants of this.</div>
      <div class=""><br class="">
      </div>
      <div class="">Sorry to sound negative, but given the limitations
        and quantities involved, I think the reality is that the HUD
        system is always going to have to be very custom (last least on
        cars with more than two CAN buses).</div>
      <div class=""><br class="">
      </div>
      <div class="">That said, the Tesla cars are the only ones at
        present that use CAN3, so the solution should be purely to
        document exactly what is required for those cars. Personally, I
        think it easiest to cut CAN3 from the OVT1/OVT2 cable, use the
        standard HUD cable, and live with the limitations. Snip Snip. If
        the HUD supports 125Kbps, the alternative is to set obd2ecu to
        that, but I really don’t like the idea of running OBDII traffic
        on buses not intended for that.</div>
      <div class=""><br class="">
      </div>
      <div class="">
        <blockquote type="cite" class="">
          <div text="#000000" bgcolor="#FFFFFF" class="">Should I deny
            allowing obd2ecu to be configured on CAN1?</div>
        </blockquote>
        <br class="">
      </div>
      <div class="">I don’t see any advantage to crippling that
        functionality. There may be cases where that is the best
        approach.</div>
      <div class=""><br class="">
      </div>
      <div class="">
        <blockquote type="cite" class="">
          <div text="#000000" bgcolor="#FFFFFF" class="">The obd2ecu
            task is fixed at 500kbps because that's what all of the
            HUD-type devices seem to use.  Adding a rate parameter
            should be easy, but I don't see it as solving anything.</div>
        </blockquote>
      </div>
      <div class=""><br class="">
      </div>
      <div class="">Standard OBDII devices should negotiate speed. I
        know the HUDs I have try 500Kbps and if that doesn’t work they
        try 250Kbps, etc. Same for OBDII dongles based on ELM327, etc.</div>
      <div class=""><br class="">
      </div>
      <div class="">The reason I suggested adding the rate parameter is
        it gives us some flexibility, and takes nothing away (assuming
        it defaults to 500Kbps).</div>
      <div class=""><br class="">
      </div>
      <div class="">This article explains this quite well: <a
href="https://copperhilltech.com/blog/how-can-bus-automatic-baudrate-detection-works-and-what-to-consider-when-connecting-to-a-network/"
          class="" moz-do-not-send="true">https://copperhilltech.com/blog/how-can-bus-automatic-baudrate-detection-works-and-what-to-consider-when-connecting-to-a-network/</a></div>
      <div class=""><br class="">
      </div>
      <div class="">See page #25 on this ELM327 spec for their approach
        of auto-baud rate detection: <a
          href="https://cdn.sparkfun.com/assets/learn_tutorials/8/3/ELM327DS.pdf"
          class="" moz-do-not-send="true">https://cdn.sparkfun.com/assets/learn_tutorials/8/3/ELM327DS.pdf</a></div>
      <div class=""><br class="">
      </div>
      <div class="">
        <blockquote type="cite" class="">
          <div text="#000000" bgcolor="#FFFFFF" class=""> First, why did
            starting obd2ecu on CAN3 cause the observed behavior?</div>
        </blockquote>
        <div class=""><br class="">
        </div>
        Because the CAN3 in the car is 125Kbps, and the obd2ecu task
        configured CAN3 to 500Kbps in active mode. That messed up the
        traffic on the car’s CAN bus.</div>
      <div class=""><br class="">
      </div>
      <div class="">
        <blockquote type="cite" class="">
          <div text="#000000" bgcolor="#FFFFFF" class="">The obd2ecu
            task is silent unless and until it receives a valid polling
            frame from the device, which should be impossible given the
            speed mismatch.  How can changing the bit rate on one CAN
            device affect the rest of the bus, if that device is
            otherwise silent?</div>
        </blockquote>
        <div class=""><br class="">
        </div>
        Not quite. The obd2ecu task initialises the bus in ACTIVE mode.
        That is not silent. The CAN hardware will, in that mode,
        actively participate in bus communications and acknowledge
        traffic. LISTEN mode would not be an issue (it would just see
        garbage can frames), but you can’t transmit in that mode.</div>
      <div class=""><br class="">
      </div>
      <div class="">
        <blockquote type="cite" class="">
          <div text="#000000" bgcolor="#FFFFFF" class="">Second, the OP
            in the TMC thread stated that they were using a pre-OVT1
            cable.  If so, CAN 2 & 3 shouldn't have been connected</div>
        </blockquote>
        <div class=""><br class="">
        </div>
        Based on the symptoms listed, and solution he gave, his cable
        MUST have all three buses connected. Either the OVT1 label was
        not not visible, or this cable was prior to us adding those
        labels.</div>
      <div class=""><br class="">
      </div>
      <div class="">Regards, Mark.<br class="">
        <div><br class="">
          <blockquote type="cite" class="">
            <div class="">On 4 Aug 2020, at 10:43 AM, Greg D. <<a
                href="mailto:gregd2350@gmail.com" class=""
                moz-do-not-send="true">gregd2350@gmail.com</a>>
              wrote:</div>
            <br class="Apple-interchange-newline">
            <div class="">
              <meta http-equiv="Content-Type" content="text/html;
                charset=UTF-8" class="">
              <div text="#000000" bgcolor="#FFFFFF" class=""> Thanks,
                Mark, for posting the update.  <br class="">
                <br class="">
                However, the point is that someone buying a new OVMS and
                Roadster OVT1 cable cannot use the obd2ecu feature of
                the module without performing some sort of hardware
                modification, and this potentially to a molded / sealed
                cable.  While this isn't a mass-market device, we really
                should make the out-of-the-box experience one of not
                killing one's car.  <br class="">
                <br class="">
                How do we make this "Layman safe" out-of-the-box, and
                configurable for all supported cars without the use of a
                soldering iron or wire snips?  Is there a table of what
                CAN busses are used for each of the supported vehicles?<br
                  class="">
                <br class="">
                For the Roadster, at least, it would seem that we need
                to change the OVMS to OBDII pigtail to use CAN2, as well
                as disconnecting CAN2 from the OVT1 cable.  CAN2 is the
                only one left with out planned functionality, right? 
                The new cables would need a label on the OBDII cable
                indicating clearly what it needs to be paired with and
                what CAN bus it be used for.  Alternatively,. would it
                be possible to add a jumper block somewhere, so that a
                safe pre-install configuration can be done?<br class="">
                <br class="">
                Should I deny allowing obd2ecu to be configured on
                CAN1?  Are there any cars or applications where this
                would be valid?<br class="">
                <br class="">
                The obd2ecu task is fixed at 500kbps because that's what
                all of the HUD-type devices seem to use.  Adding a rate
                parameter should be easy, but I don't see it as solving
                anything.  From the devices I tested, there is no
                "negotiation" on CAN bus rate; or much of anything else
                for that matter.  They just turn on and start talking. 
                The only flexibility that I observed was whether they
                use base or extended frame formats, and I support both
                dynamically.  Or, are they also sensitive
                (self-configuring) to the bus speed, and if so, how is
                that done?  I suppose matching the 125k speed on CAN3
                might work, but I'd really (REALLY) not want to put some
                random 3rd party active polling device on my car's ESS
                bus.  The two worlds need to be firewalled from each
                other, and that's the job of OVMS in this case.<br
                  class="">
                <br class="">
                All this said, there are still two puzzles in my mind. 
                First, why did starting obd2ecu on CAN3 cause the
                observed behavior?  The obd2ecu task is silent unless
                and until it receives a valid polling frame from the
                device, which should be impossible given the speed
                mismatch.  How can changing the bit rate on one CAN
                device affect the rest of the bus, if that device is
                otherwise silent?<br class="">
                <br class="">
                Second, the OP in the TMC thread stated that they were
                using a pre-OVT1 cable.  If so, CAN 2 & 3 shouldn't
                have been connected, so there should have not been any
                possible interaction with either bus in the car. 
                Something is not adding up here...  Or, did some prior
                version of the cable also connect to all three?<br
                  class="">
                <br class="">
                Greg<br class="">
                <br class="">
                <br class="">
                <div class="moz-cite-prefix">Mark Webb-Johnson wrote:<br
                    class="">
                </div>
                <blockquote type="cite"
                  cite="mid:7B172510-6D65-4111-B9A5-4138C2233163@webb-johnson.net"
                  class="">
                  <meta http-equiv="Content-Type" content="text/html;
                    charset=UTF-8" class="">
                  Greg,
                  <div class=""><br class="">
                  </div>
                  <div class="">I updated the TMC thread as follows:</div>
                  <div class=""><br class="">
                  </div>
                  <blockquote style="margin: 0 0 0 40px; border: none;
                    padding: 0px;" class="">
                    <div class=""><span style="color: rgb(2, 2, 2);
                        font-family: Roboto, sans-serif;
                        font-variant-ligatures: normal; orphans: 2;
                        widows: 2; background-color: rgb(254, 254,
                        254);" class="">Here are the Tesla Roadster CAN
                        bus details:</span><br style="color: rgb(2, 2,
                        2); font-family: Roboto, sans-serif;
                        font-variant-ligatures: normal; orphans: 2;
                        widows: 2; background-color: rgb(254, 254,
                        254);" class="">
                      <ul style="margin: 1em 0px 1em 3em; padding: 0px;
                        color: rgb(2, 2, 2); font-family: Roboto,
                        sans-serif; font-variant-ligatures: normal;
                        orphans: 2; widows: 2; background-color:
                        rgb(254, 254, 254);" class="">
                        <li style="margin: 0px; padding: 0px;
                          list-style: outside disc;" class="">Instrumentation:
                          OVMS CAN1 (on OVT1): 1MHz, on DIAG pins 6/1.
                          Contains VDS, TPMS, Instrumentation Display.</li>
                        <li style="margin: 0px; padding: 0px;
                          list-style: outside disc;" class="">Powertrain:
                          OVMS CAN2 (on OVT1): 500Kbps, on DIAG pins
                          7/2. Contains PEM, Switchpack, etc.</li>
                        <li style="margin: 0px; padding: 0px;
                          list-style: outside disc;" class="">ESS: OVMS
                          CAN3 (on OVT1): 125Kbps, on DIAG pins 11/4.
                          Contains ESS and HVAC.</li>
                      </ul>
                      <span style="color: rgb(2, 2, 2); font-family:
                        Roboto, sans-serif; font-variant-ligatures:
                        normal; orphans: 2; widows: 2; background-color:
                        rgb(254, 254, 254);" class="">The problem you
                        had is the cable you have between OVMS and the
                        car wires all three CAN buses. Then when you
                        start up the obd2ecu on CAN3 at 500kbps that
                        conflicts with the vehicle's own ESS CAN bus at
                        125Kbps you are running this on top of. You mess
                        up the vehicle comms between the VMS, HVAC, and
                        ESS. It would make no difference if the HUD
                        cable was plugged in, or not.</span><br
                        style="color: rgb(2, 2, 2); font-family: Roboto,
                        sans-serif; font-variant-ligatures: normal;
                        orphans: 2; widows: 2; background-color:
                        rgb(254, 254, 254);" class="">
                      <br style="color: rgb(2, 2, 2); font-family:
                        Roboto, sans-serif; font-variant-ligatures:
                        normal; orphans: 2; widows: 2; background-color:
                        rgb(254, 254, 254);" class="">
                      <span style="color: rgb(2, 2, 2); font-family:
                        Roboto, sans-serif; font-variant-ligatures:
                        normal; orphans: 2; widows: 2; background-color:
                        rgb(254, 254, 254);" class="">Switching to CAN2
                        solved the problem because that is the
                        powertrain CAN bus also at 500Kbps. However,
                        this is still possibly dangerous, because the
                        message IDs on the bus may conflict. But
                        probably ok.</span><br style="color: rgb(2, 2,
                        2); font-family: Roboto, sans-serif;
                        font-variant-ligatures: normal; orphans: 2;
                        widows: 2; background-color: rgb(254, 254,
                        254);" class="">
                      <br style="color: rgb(2, 2, 2); font-family:
                        Roboto, sans-serif; font-variant-ligatures:
                        normal; orphans: 2; widows: 2; background-color:
                        rgb(254, 254, 254);" class="">
                      <span style="color: rgb(2, 2, 2); font-family:
                        Roboto, sans-serif; font-variant-ligatures:
                        normal; orphans: 2; widows: 2; background-color:
                        rgb(254, 254, 254);" class="">Given the
                        limitations, and work we are doing with OVMS, it
                        is probably best to keep CAN1 and CAN3 for
                        OVMS-car comms (as those are the two most useful
                        CAN buses and I plan to release some
                        functionality on CAN3 ESS bus to show battery
                        brick voltages and temperatures). If you are
                        concerned with possible ID conflict, you can
                        disconnect CAN2 at the DIAG connector (pins #4
                        and #11) to make sure you don't conflict.</span></div>
                  </blockquote>
                  <div class="">
                    <div class=""><br class="">
                    </div>
                    <div class="">This is always going to be vehicle
                      specific, and probably best addressed by adding
                      Tesla Roadster specific documentation. It would be
                      useful to be able to confiture the baud rate of
                      the bus in the obd2ecu code (but we are limited by
                      what baud rates the HUDs will support during their
                      negotiation).</div>
                    <div class=""><br class="">
                    </div>
                    <div class="">Regards, Mark.</div>
                    <div class=""><br class="">
                      <blockquote type="cite" class="">
                        <div class="">On 4 Aug 2020, at 1:29 AM, Greg D.
                          <<a href="mailto:gregd2350@gmail.com"
                            class="" moz-do-not-send="true">gregd2350@gmail.com</a>>
                          wrote:</div>
                        <br class="Apple-interchange-newline">
                        <div class="">
                          <div class="">Hi Mark,<br class="">
                            <br class="">
                            So, following the "OVMS issue: obdii on can3
                            crashes VMS" thread on TMC<br class="">
                            led me to an "oops!", I think...  Did I miss
                            something?<br class="">
                            <br class="">
                            With the updated OVMS cable to the Diag port
                            on the Roadster, the report<br class="">
                            is that all 3 CAN busses are connected to
                            the car.  If so, doesn't that<br class="">
                            make the obd2ecu process impossible to run,
                            since there's no CAN bus<br class="">
                            available on the 26 pin port to connect a
                            HUD to?  And, if one were to<br class="">
                            hook up a HUD to the 26 pin port, wouldn't
                            its polls be sent on (at 500<br class="">
                            kb/s) through the OVMS wiring to the car,
                            confusing the car?<br class="">
                            <br class="">
                            Is the older (single CAN bus) cable still
                            available?  That, I would<br class="">
                            think, would fix the problem.  I have the
                            original cable, so haven't<br class="">
                            noticed anything wrong.  The OP on that
                            thread also claimed the original<br class="">
                            cable, which doesn't make sense.<br class="">
                            <br class="">
                            Where is the Oops?<br class="">
                            <br class="">
                            Greg<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"
                              moz-do-not-send="true">http://lists.openvehicles.com/mailman/listinfo/ovmsdev</a><br
                              class="">
                          </div>
                        </div>
                      </blockquote>
                    </div>
                    <br class="">
                  </div>
                  <br class="">
                  <fieldset class="mimeAttachmentHeader"></fieldset>
                  <br class="">
                  <pre class="" wrap="">_______________________________________________
OvmsDev mailing list
<a class="moz-txt-link-abbreviated" href="mailto:OvmsDev@lists.openvehicles.com" moz-do-not-send="true">OvmsDev@lists.openvehicles.com</a>
<a class="moz-txt-link-freetext" href="http://lists.openvehicles.com/mailman/listinfo/ovmsdev" moz-do-not-send="true">http://lists.openvehicles.com/mailman/listinfo/ovmsdev</a>
</pre>
                </blockquote>
                <br class="">
              </div>
              _______________________________________________<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>
          </blockquote>
        </div>
        <br class="">
      </div>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
      <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>
  </body>
</html>