BREmote V2 - Open Source Remote

Take 10 gears. When on the water, set the gear on the remote to 8 for example, to get more sensitivity and less maximum power

I figured that out today playing with settings I set to only 2 gears and it didn’t have the speed or power to get me on foil so I’ve now set to 10 gears and I ran at 8. My technique is not quite good enough yet to get going on my HA foils so I went back to the HS1550 and got up straight away and it felt great. I’ve yet to try my prone sinker board yet. I’ve also set throttle expo from 80% back to 50%. I feel I need more motor input at the first quarter of throttle there’s too much of a dead band there?
Also trigger would benefit with a stronger spring.

Hey, for the experience I was thinking to try send the v2 gerber files over to JLCPCB, is there anything we need to do or modify. I followed the instructions for V1, but JLCPCB have updated their site and the v1 design has updated since the youtube.
For the V2, there doesn’t seem to be a scheme file, so hard to know if the processor orientation or something similar is incorrect
Thanks for your incredible work :slight_smile:

Upload Gerber, select 0.8mm thickness for both Tx, upload bom and cpl, check visually if it looks ok. The pin 1 is marked for every component in the white print on the PCB

Processor will not be populated by JLC, needs to be ordered separately as well as display for example and placed by hand

All gerbers as well as schematic are in GitHub

1 Like

Update on Tx: The “startup buttons”, so entering calibration or pairing by holding toggle towards left or right while boot, was not working when no_lock and no_gear was activated. Fixed, thanks to @okp for finding this bug with me.

1 Like

It turns out the potting compound is included the openfoil kit, as I found out when it arrived, so problem solved!

For anyone else assembling: I struggled assembling my PETG 3D printed Tx, as I kept cracking the print when inserting the screws (grub screws were the worst). Perhaps my printer accuracy is not great, but I found the best solution was to drill all holes slightly smaller than the screw (1, 2 or 2.5mm drill bit), and then heat the screws up with a lighter for a few seconds. This is enough to make the PETG soft enough. Pre-inserting the screws as per the video, also helps, as it is a lot easier to do this without other components in the way.

1 Like

For the grub screws I recommend to tap the holes with the matching M3 tap

PLA+ works well for the Remote.

I received the BN220 GPSes with the kit, and before potting I wanted to make sure all wiring is correct. I understand some functionality might still be in development, so just wondered if there is a way I can validate wiring and setup now? Both Tx and Rx are flashing blue and red, so they are sending packets and GPS is locked. For Rx I enable the GPS setting in the conf, but ?printGPS only shows packets received, but invalid for everything else. For Tx, I don’t see any way of checking.

To check if GPS module is connected correctly

www.dropbox.com/scl/fo/724rwm32iszfdma40xryg/AIOmuq3KrFPXM2xLg4Jbu7Q?rlkey=6fml304ozqksnhqpzkr80ckeo&dl=0

-Upload like known (.ino.bin to 0x10000)
-Remote will start and propmt you to do calibration every time
-Go below open sky, turn on, do calibration
-Remote will say “IP” (initialize position)
-After some time should say “LOC” and -6- or any other number
-If it does not, turn off and on again and try again - needs good view of sky for GPS reception

After that upload original firmware again

Thanks, tested and working!

1 Like

Is RX or TX speed enabled in current firmware ?

Also, if gears are disabled, after some time steering stops working without throttle input. Seems like steering lockout is still enabled. Is it possible to disable that lockout ?

It’s the speed the Rx is measuring that’s being displayed on the remote

If you disable both gears and locking, yes

Otherwise set tog_block_time to 0, in that case once you give throttle once it will never go back from steering mode

Thanks for quick response.
Does parameter “speed_src” change anything ? Had it on GPS TX kmh and had no readout.
Confirmed TX gps is working with code from dropbox.

That is not implemented yet. The parameter does nothing at the moment. Set GPS_en to 1 on Rx, then Tx will show speed of Rx

I’m having issues with gps on RX. Tried BN-220 module and one supplied with the kit, none report sat lock on receiver.
----- GPS Satellite Status ----- Satellites in view: 0 HDOP (Horizontal Dilution of Precision): Invalid Location validity: Invalid Date/Time validity: Invalid Course validity: Invalid Chars processed: 65909 Sentences with fix: 0 Failed checksum: 0

Chars processed number is going up on each refresh, purple LED is blinking on BN-220, no speed on remote or sat lock on serial monitor.

Checked both GPS modules with arduino Nano, both work fine on 9600 baud.

Checked on 2 receivers as well. Connected to UART 1.1, FW V2

Any ideas what can be wrong ?

The Rx currently only works with the ublox Neo module (the “old” one supplied by openfoil)
Make sure Rx and Tx are not swapped and that you close the 5V bridge for UART1.1

I tried and did not work with GY-GPS6MV2 (Ublox neo-6m).
In the code we change baud rate of GPS to 115200 from 9600 default. Looks like its failing to send this to GPS module.
I changed baud to 9600 in GPS.ino

// Reopen Serial1 at new baud rate
Serial1.end();
Serial1.begin(9600, SERIAL_8N1, P_U1_RX, P_U1_TX);
while(!Serial1) vTaskDelay(pdMS_TO_TICKS(10));

and now both modules are working, getting :

----- GPS Satellite Status -----
Satellites in view: 5
HDOP (Horizontal Dilution of Precision): 403 (Lower is better, <1 Excellent, 1-2 Good, 2-5 Moderate, 5-10 Fair, >10 Poor)
Location validity: Valid
Latitude: 59.463265
Longitude: 5.469075
Altitude: 19.20 meters
Date/Time validity: Valid
Date/Time: 2025-12-06 18:39:01 UTC
Course validity: Valid
Course: 0.00 degrees
Chars processed: 95324
Sentences with fix: 45
Failed checksum: 173

Also remote is displaying speed for the first time :slight_smile:

Ok, interesting. However it will not work with 9600 baud, as the time to read the GPS info at 9600 will be too much for the other functions taking place (send telemetry,…)
At some point you will probably get a stack overflow or other performance issues

There is a function, “configureGPS()” in GPS.ino
Not only does it set baudrate, it also sets update rate to 5Hz

Maybe you can try calling this later and observe if/why it fails with your module?
Or add a delay in setup before this gets called, just to exclude its a timing issue?

Can you maybe also enable VESC UART in the config? You dont need to connect an actual VESC, just to see if it helps. (or disable if you have it enabled)

Tried a bunch of things with no success.
Tried delays before and after configureGPS() is called in the setup, tried data_src ==0, tried setting baud to 9600 in setup, tried calling configureGPS() from serial monitor (added additional lines in System.ino.
Tried changing Serial1 baud from serial monitor to 9600 and then calling configureGPS().
Added Println comments in configureGPS() at each baud change and function is being run.

I’m amateur at this stuff. Can it be a hardware problem? If RX line from GPS module is “broken”, would it be able to send data and receive or there will be no communication at all ?