cvieira

joined 4 years ago
 

TL;DR: I'm writing a program that could be used by a malicious user to track people. Do I license it under GPLv3 to guarantee user freedom, or do I use a more restrictive license to prevent abuse?

Introduction

Hello! I'm a software developer with quite a bit of experience in automotive electronics, and I've run into a bit of an ethical dilemma, and I'd like to get some input from people who care about the same issues I do.

ALPR

If you already know what ALPR is, you can skip to the next section.

As a brief background for those who aren't familiar, automated license plate recognition (ALPR) is a rapidly growing technology that detects, records, and logs license plates, typically on public roads. This technology is almost always pushed as a safety measure to protect the populations under surveillance. The argument generally goes that people should be willing to give up some privacy if it means helping police identify stolen vehicles, AMBER alerts, and more. If you're a member of this Lemmy community, I don't think I need to explain why I think this is a terrible idea.

V0LT Predator

Predator is my attempt to take on this industry with a highly private alternative to traditional ALPR. In short, Predator is completely open source, runs entirely locally (with no telemetry/data mining), and uses independent hot-lists to decide what plates to alert to. The idea is that instead of a government agency setting up thousands of cameras to track hundreds of thousands of vehicles, individual users can set up cameras in their own vehicles, and help track down relevant vehicles (like AMBER alerts with associated license plates) indepdently. I figure this bottom-up approach can reduce the severity of mass surveillance and data centralization without entirely giving up the advantages of ALPR.

The danger with ALPR is when someone has access to so much centralized data that they can form a map of everywhere a specific vehicle has been. This is not something that's realistically possible on the scale of an individual user operating independently.

I realize many people will probably be entirely opposed to the idea of building an ALPR platform in the first place, but I hope you can understand my motivation.

Growth

Predator started as a brief personal challenge, but rapidly turned into one of my most advanced products. As far as I can tell, it is currently the only active open source ALPR ecosystem, and is the most popular alternative to SaaS ALPR platforms like Rekor and Flock Safety.

The issue is that this growth came with surging demand for many of the features supported by traditional ALPR services. I've had to walk a very fine line with making Predator valuable enough as a product to replace traditional mass-surveillance without turning it into a mass-surveillance product in itself. My decision making when considering new features has primarily been based on these two features:

  1. Is this feature useful to individual private users? (people with Predator dash-cams, home security systems, etc)
  2. Would this feature make it easier for a state agency or company to conduct mass surveillance?

As I'm sure you can image, this is an extremely gray area, but I think I've managed to walk the line pretty effectively so far.

The Problem

That leads us to the latest problem. There's been a lot of interest in some kind of product to organize and centralize license plate data collected by individual Predator instances. For example, a university police department running parking enforcement might want to identify plates that haven't purchased a parking pass. I think this use-case is fair, since all vehicles being monitored implicitly consent by purchasing a pass, and vehicles are not followed off-campus. That being said, this is one of those products I've been hesitant to add, since it would absolutely make it possible to use Predator as a mass surveillance tool.

The other day, I started developing a system like this internally, and it was a bit terrifying how effectively it worked. With a $80 off-the-shelf camera system, I was able to track dozens of vehicles after driving around for ~15 minutes.

The Dilemma

Here's the dilemma. If I hosted this service as an online-only product (which is the current plan), I could pretty effectively prevent it from being used for mass surveillance. For example, I plan to limit accounts to a few hundred unique vehicles unless they apply for an override. Customers with legitimate use cases can be granted overrides with geofenced areas to fill their use-case (i.e. the university campus from the previous example). However, this significantly compromises user control, since they would have to go through my services to use the product.

Typically, I would prefer to make the software entirely open source and self-hostable under the AGPLv3. However, this would make it trivially easy for a government agency or business to set up a mass scale surveillance system.

I'm struggle to decide how to approach this issue. Have I backed myself into a corner with this one? I'd love to hear everyone's thoughts on this dilemma, and the Predator ecosystem as a whole.

[–] [email protected] 1 points 4 months ago

I've been using the Hornit dB140, which has two modes. One is a loud peircing chirp sound, and the other is a much less loud sound resembling a car horn. I personally leave it on the peircing mode. The battery has lasted several months with regular use, so recharging isn't much of a concern.

The trigger is separate from the horn unit, which allows me to put it somewhere that I can hit the brakes and the horn at the same time.

I've been really happy with it, but I also haven't tried any alternatives to compare to.

[–] [email protected] 7 points 4 months ago* (last edited 4 months ago) (2 children)

As a commuter, a big upgrade for me was getting a peircing loud bike horn. Despite having multiple bright lights and high-vis, I still have multiple close calls a week with cars not looking before turning. Having a way to get a driver's attention without needing to rely on them even looking at all has been a huge benefit.

Additionally, this might be a controversial opinion, but I've found the wearing high-vis clothing often makes the issue worse. As a general rule, I try to select high-vis clothing that makes me look more like a motorcycle than a pedestrian. For example, I wear a reflective helmet and neon gloves, but not vests or shirts. When a driver waiting to emerge sees me, I want them to think "rapidly approaching vehicle" and not "slow moving pedestrian".

I use my bike like a car, and I live in a rural area. I regularly ride 20-30mph to fit in with traffic, so my experience may differ from yours if you ride in a slower, more urban environment.

[–] [email protected] 2 points 7 months ago

85 needs to be connected to 12v, not ground.

I think you may have just solved my problem. When I've used relays in the past, pin 85 was connected to ground, since I wanted the relay to close when the trigger went high. I'm not sure why it never occurred to me that I'm essentially trying to do the opposite thing here, since the horn is triggered when the trigger wire is connected to ground.

I've never worked with individual diodes, so I'm not sure about the correct terminology, but which way would I want the diode to "face"? Do I want it to allow current to run from the 12V source, through the added relay, to the horn switch wire, or the other way around?

Additionally, would I need to add an in-line resistor? It makes me a little nervous connecting the horn switch to 12V, given that I doubt it's designed to carry a significant amount of current.

[–] [email protected] 1 points 7 months ago* (last edited 7 months ago)

The idea is that the dashcam can show when the driver presses the horn in a car accident without the driver needing to do anything different. Anyone can drive the car without any specific knowledge, and the camera will just work in the background.

If you've even seen police dashcam video with the text overlays at the bottom reading "[HORN] [SIREN] [LIGHTS] [BRAKE]", this is essentially a custom implementation of that for more general use.

[–] [email protected] 1 points 7 months ago* (last edited 7 months ago)

I've honestly never worked with transitors. Basically all of my experience is with pre-made 12V electronics. The appeal of the relay method to me was that it felt fairly non-invasive, since my add-in circuit is essentially isolated from the car with the relay (for example, I can trigger the relay with 12V, and switch a 5V circuit without any issue). Would the same be true with a transistor?

[–] [email protected] 1 points 7 months ago (2 children)

It seems like the horn wire is normally at 12V, and pressing the horn brings it down to about 0V. I figure the horn switch it just shorting that wire to ground, which in turn triggers the factory horn relay. Would a dioide in like with my trigger relay stop the add-in relay from connecting the factory horn wire to ground?

[–] [email protected] 1 points 7 months ago

I'm confident the wire I've tapped into is the horn, since I've previously used it to install a horn override as part of a PA system. That being said, I hadn't considered that I might be connecting to a computer rather than something more analog. When I press the horn, I can faintly hear a relay clicking in the engine bay, so I'm hoping it's just a simple relay.

[–] [email protected] 1 points 7 months ago (1 children)

This coil has a standard resistance/impedance

I see. I was under the impression that there's a seperate resistor to avoid shorts when you connect from the trigger to ground.

What year/model of car?

It's a 2014 Nissan Altima. I've spent quite a bit of time trying to find wiring diagrams, but I haven't gotten very far. I got to the point I'm at now by following some old forum posts and confirming with a multimeter. What you described sounds accurate: the horn wire under the steering column seems to always be at 12v. Pressing the horn seems to send it to ~0V, so I assume it's just jumping to the shared ground wire. I will say that when I disconnect to horn at the front of the car (to silence it), I can hear a relay in the engine bay clicking when I press the horn. I figure that implies it's a physical relay, rather than a computer somewhere.

And realistically you could in a pinch pull coil power from the horn itself

This is something I've considered doing. The circuit I'm adding with the relay is extremely low current, so I don't think it would be too tricky to run wires from a relay connected right next to the horn to the cabin. I can just ground the relay to the frame of the car right near the horn such that there's minimal chance of creating a short on the high-amp horn circuit.

[–] [email protected] 1 points 7 months ago (2 children)

Right now I'm trying to hook up a custom dashcam that can show an overlay when the horn is pressed. It works via GPIO, and essentially just checks to see if a specific pin is connected to the ground pin. I figured putting a relay between those two pins with a small resistor for safety would be the least invasive way to do that.

 

I've been trying to solve an automotive electronics problem for several weeks now, but everyone I've spoke to can't seem to come up with a solution.

In brief, I'm trying to add a relay in-line with the horn switch in my car, such that I can close my own circuit when the horn is pressed, without affecting the existing horn circuit in the car.

I had some JD1912 12V relays left over from a previous install, so I tried to use those. (Relevant image: Diagram)

First, I placed connected the trigger wire (pin 86) to the the wire coming into the horn switch, and the ground (pin 85). The relay triggered when the horn button was pressed as expected, but this also caused the actual car horn to sound continuously. Presumably doing this was enough to give the factory horn relay enough current to close.

Next, I tried placing the relay in series with the horn switch by splicing the wiring heading into the horn switch, and connecting the relay (pin 86 and 85) in line. Once again, the relay triggered with the horn switch as expected. However, this time, the actual car horn didn't sound at all.

The best I can work out is that there's a resistor in-line with the relay trigger (otherwise connecting it straight to ground would cause a short, right?) However, that resistor is just enough to allow the factory horn relay to trigger when connected to ground.

The way the car is designed, I can't splice into the wire coming out of the switch to detect when the horn is pressed, since it's a shared ground with other components.

My question is, is there such a thing as a relay with no resistor? Essentially all I'm looking for is a component that will "detect" current on the horn switch wire, and close a separate circuit. I'm not sure if a relay is even the correct way to go about this. Hopefully you guys can point me in the right direction.