HN user

pd0wm

676 karma

https://github.com/pd0wm https://blog.willemmelching.nl

Posts15
Comments31
View on HN

With modemmanager you get a lot of nice stuff for "free", like automatic reconnect, DHCP, good logging, and an APN database (useful if you don't provide your own SIMs). It also allows you to easily set up correct priorities between WiFi and LTE, both for routing and DNS. Especially DNS is something I didn't think about at first, but the DNS server provided by your LTE connection is not always reachable over your WiFi/ethernet connection.

This is the config I'm using: https://github.com/commaai/agnos-builder/blob/master/userspa...

You can run modemmanager in debug mode, which allows you to send AT commands over dbus (or mmcli) in case you still want to configure some stuff manually or get debug info.

Have you experimented with modemmanager/networkmanager to handle the configuration of the modem? For me that has worked quite reliably across a pretty large fleet of devices with a Quectel EG25 (qmi over usb).

Regarding FW updates, have you tried opening a support ticket with Quectel? For me they have been extremely responsive and helpful, providing extra documentation on special AT commands and stuff.

In this case the EPS already came stock with the functionality to request torque over CAN, that part of the code or the amount of torque was not touched. I agree it would not be a good idea to patch that functionality into an EPS that doesn't come with that from the factory.

The XOR encryption was just for the update container. Newer update files usually employ some stronger forms of compression/encryption. However, it's usually some strange in-house crypto, so eventually people figure it out.

bri3d refers to using RSA signatures on the firmware once it's written to the flash. By ensuring the firmware is signed using the manufacturers private key it should (in theory) prevent messing with the firmware, even if all encryption/flashing steps have been reverse engineered.

Some interesting reading: https://github.com/bri3d/VW_Flash/blob/master/docs/docs.md https://github.com/jglim/UnsignedFlash

Comma Three Devkit 5 years ago

At some point the values have no deeper meaning and are just whatever VW decided on as their API. DBC files have concepts of enums, but that’s really diminishing returns and wouldn’t make the code that much easier to understand.

Also sometimes there are fixed values in the message that we’ve only observed as static data. Ironically that makes it impossible to reverse engineer what they mean. So those just have to be labeled as hardcoded value.

Those are actually magic. Those are the ECU firmware identifiers from the manufacturer that are used by openpilot to recognize which car it’s connected to.

Comma Three Devkit 5 years ago

The file you referenced is related to Ford, which is not a supported car/brand. The code for Ford is provided as a reference and is forced into “read-only” both by openpilot and panda (the bridge between openpilot and the car).

Seems like the https://www.vector.com/int/en/products/products-a-z/hardware... has some similar functionality. I have never used it, but by reading the documentation I'm not sure if it would have been useful here. The frame with ID 65 which needs be overwritten, actually contains 4 different messages indicated by the last byte in the payload. To properly time the modification you need to sync up on that, which the Vector box can't do.

Also price on request, so probably not in the price range of our target audience.

It might have not been clear from my comment, but I was specifically referring to those ML as a service. The TPUs seem to fall under GCP which has a less restrictive ToS.

I do understand they don’t want to make it too easy to resell their research. But having access to all your source code, training data and documentation is a bit extreme. Why can’t they just tell you to stop selling your product?

I wonder if they will apply the same terms of service as with their Cloud Machine Learning offerings (Auto ML, Cloud Vision, etc).

A snippet from https://cloud.google.com/terms/service-terms#12-google-cloud...:

  Customer will not, and will not allow third parties to: (i) use these Services
  to create, train, or improve (directly or indirectly) a similar or competing
  product or service or (ii) integrate these Services with any applications for
  any embedded devices such as cars, TVs, appliances, or speakers without Google's
  prior written permission. These Services can only be integrated with
  applications for the following personal computing devices: smartphones, tablets,
  laptops, and desktops. In addition to any other available remedies, Google may
  immediately suspend or terminate Customer's use of these Services based on any
  suspected violation of these terms, and violation of these terms is deemed
  violation of Google's Intellectual Property Rights. Customer will provide Google
  with any assistance Google requests to reasonably confirm compliance with these
  terms (including interviews with Customer employees and inspection of Customer
  source code, model training data, and engineering documentation). These terms
  will survive termination or expiration of the Agreement.

You are probably referring to fish shell which has this feature (https://fishshell.com/).

However, I find that zsh + ohmyzsh works just as well. After typing the beginning of a command you can use the arrow keys to cycle through all commands in the history with the same beginning.

A third method for efficient history search is ctrl+r. Just press ctr+r and start typing part of the command. Then you press enter to execute or ctr+r to cycle through the history.

The exact same can be said about human drivers. Why do we demand that autonomous driving is 100% safe? I would be completely fine with autonomous cars that sometimes crash, but are still less likely to do so than with human drivers.

Project: Designing my own cruise control

Currently I'm a MSc. student in Systems & Control. To put theory into practice I'm designing a cruise control for my car. Eventually this should become an open system to assist the driver. This allows for integration of things like following distance, speed limit, traffic density to improve safety and comfort.

Currently I'm working on parsing data from the GPS and other sensors. Read more about this on my blog: http://willemmelching.nl/. Code: https://gitlab.com/pd0wm/open-driver-assist

The title of the article is misleading. France has had an opt-out sytem for organ donation for years. The only thing that has changed is that it is no longer required to consult relatives for a second opinion.

Until 1 January, when the legislation took effect, unless the person who had died had previously expressed a clear wish for or against donation, doctors were required to consult relatives who, in almost a third of cases, refused.

However, there is also a downside to a higher switching frequency. In the inverter transistors are used to generate the high frequency AC voltage.

A transistor generates no loss if it is in the full on or full off state (saturated). But every time a transistor switches from the on to off state (or back) it goes through its linear region. While in the linear region the transistor acts as a resistor and generates heat. If you increase the switching frequency the transistor switches more often and thus generates more heat.

The solution to this problem is to use more efficient transistors or decrease the switching time (the time it takes to switch from high to low, or back).

Of course higher switching frequencies also have lots of other problems such as radiation, skin effect, etc.