GithubHelp home page GithubHelp logo

edgetx / buddy Goto Github PK

View Code? Open in Web Editor NEW
37.0 5.0 19.0 75.73 MB

The next generation tool for EdgeTX. A cross platform app, with browser compatibility.

Home Page: https://buddy.edgetx.org

License: MIT License

JavaScript 2.86% Shell 0.01% TypeScript 96.94% HTML 0.16% CSS 0.02%
tool firmware flashing dfu edgetx electron webusb web-filesystem

buddy's Introduction

EdgeTX Buddy logo

Pipeline status Coverage code style: prettier

Helping you on your journey to EdgeTX

Development

Prerequisites

This application uses node-usb when running in electron. In order to compile the bindings some build libraries are required depending on platform. For MacOS and Windows, these should already be built in.

Linux

$ sudo apt-get install build-essential libudev-dev

This software is designed to run on node@20 which can be installed with Fast Node Manager

Commands

Enable or install yarn package manager

# For Node.js <16.10
$ npm i -g corepack

# For Node.js >=16.10
$ corepack enable

Install deps

$ yarn

Developing

# Start electron and web environments in watch mode
$ yarn start

# Start web environment only
$ yarn start:web

# Storybook component environment
$ yarn storybook

Building

# Build and pack electron app (outputs renderer assets too)
$ yarn build

# Compile only web environment
$ yarn compile:web:production

Run tests

$ yarn test

Run e2e tests - requires web or app to be built

# Web app tests
$ yarn e2e:web
# Electron app tests
$ yarn e2e:app

Lint

$ yarn lint:all

# Or yarn lint <file>

Format (this codebase has enforced formatting with prettier)

$ yarn fmt

Extract new translation strings

$ yarn extract-locales

Translations

Translation strings are stored in the ./locales directory. To contribute a language which doesn't already exist:

  1. Add the ISO code to the ./locales/languages.json
  2. Extract the strings to the new language files (yarn extract-locales)
  3. Translate the strings for their equivilent meanings

The namespaces (common, flashing, etc), provide some context for what the strings relate to

Structure

The application is split into different contexts

  • Main: Electron Main Process - initialising the electron application, runs the backend when running in electron. Runs in a Node.JS context
  • Renderer: React Web Application - Runs in browser or electron renderer process. Shows different UI depending on context.
  • Shared: Multi-Context code - Designed to run in any environment. Imported by both Main or Renderer
  • Webworker: WebWorker Context - .bootstap files start-up .worker files. Code designed only to run in WebWorker contexts.

Communication

This application makes use of GraphQL to request data across process boundary. Meaning that the renderer process is always entirely separated from the GraphQL execution environment.

Apollo Bus Link is used to facilitate the communication between the GraphQL execution process in Electron or Webworker environments.

Electron architecture Webworker architecture

Exceptions

Within WebWorker contexts, there are some browser functions which cannot be invoked within WebWorker contexts and so have to be invoked in the main process. In order to keep things in Electron and Web processes similar a set of Cross Boundary Communication functions have been defined.

Acknowledgements

A massive thank you to the software which makes all of this possible. Specifically:

Screenshots

Screenshot of flashing

buddy's People

Contributors

bigspeedfpv avatar daleckystepan avatar freshollie avatar hthuren avatar jurgelenas avatar kobakirill avatar l1cardo avatar pancronos avatar pfeerick avatar raphaelcoeffic avatar riwanou avatar rotorman avatar ulfhedlund avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

buddy's Issues

Disable "Include pre-releases"

After enabling "Include pre-releases", I can't disable it anymore. Using Google Chrome Version 115.0.5790.110 (Official Build) (64-bit).
I think it's not a big thing, but maybe not so nice...

Thanks for this great software!
Woutput

About the ver

Will you please add the correctlly version of the package?
It's always 'latest' now.
I've ported the package to AUR edgetx-buddy-bin , but the version was always '0.1.0'.

Downloading and flashing nightlies

So it seems like it's not possible to download and flash nightlies atm? So what did I break this time? 😆 I tried this with a newly added target, as well as old ones, and seem to thing I had the same problem at one point with a PR build, but can't be certain as it was a while ago that I tried. However flashing from a release seems to be fine.

Permission denied

Getting permision denied on linux

fixed by using chown on /dev/bus/usb/003/014
To be the "file" was owned by root so I hade to
sudo chown $USER: /dev/bus/usb/003/014
Which then made it work.

For others with this issue to find the path to the device us lsusb

Which will give you something like
Bus XXX Device YYY: ID AAAA:BBBB ... SMT ... in DFU mode

You can double check the AAAA:BBBB it should be same as on the website and then the path is /dev/bus/usb/XXX/YYY

It could be helpful to provide this information if possible in the error message when permission denied encountered on linux.

Wrong language name for Swedish

The recently added Swedish language is named "Davvisámegiella" instead of "Svenska" in the language selection list, see attached screenshot.
wrongLanguageName

Expert mode - work with branches also

Was just thinking... the "Dev Tools" tab of expert mode allows for downloading/flashing PR builds... but it would also be great to be able to just pull for any branch of the EdgeTX repo... i.e. the latest commit from 2.9/2.10 branch, etc.

Download Cloudbuild firmwares

When using the regular "Cloud" tab, the firmware for a specific radio can be downloaded. This option does not exist yet for the firmwares built via "Cloudbuild", but would be very useful IMHO.

Could not connect to DFU interface

Hi, I was trying to upgrade the firmware but continuously face the following error. I tried installing drivers but nothing is working..
image

Unable to click Settings or GitHub icon in App

Don't know why but the app on windows 11 doesn't let me open settings. if i click on the github icon or the setting icon doesn't do anything. It works fine online.
Even running as administrator doesn't work.

Unable to flash protected devices

I get this error:

Special DfuSe command 65 failed Details

My Setup:

OS: Manjaro Linux x86_64
Host: X570 I AORUS PRO WIFI -CF
Kernel: 5.15.21-1-MANJARO
Uptime: 1 day, 8 hours, 21 mins
Packages: 2243 (pacman), 39 (flatpak), 9 (snap)
Shell: zsh 5.8
Resolution: 2560x1440, 2560x1440, 2560x1440, 2560x1440
DE: GNOME 41.3
WM: Mutter
WM Theme: Qogir-dark
Theme: Qogir [GTK2/3]
Icons: Qogir [GTK2/3]
Terminal: alacritty
CPU: AMD Ryzen 9 5900X (24) @ 3.700GHz
GPU: AMD ATI Radeon Pro WX 4100
Memory: 20919MiB / 64316MiB

Filterable radio selection

Is it possible to make it so the radio model field lets you type in it and filter by what you type... i.e. if I type in "Jum", it would only show Jum(per) radios, or T-L(ite), etc? Just a QoL feature that would be nice to have if it can be easily implemented.

Allow firmware language selection

It would be nice to allow language selection for the firmware .bin (as for SD card content). The 2.7 release page offers multitlingual builds of 2.7 firmware.

Example: for TX16s french firmware version you'd use the link "Multilingual builds" from the 2.7 release page (https://github.com/EdgeTX/edgetx/releases/tag/v2.7.0), download tx16s-zip and extract tx16s-FR-f79978b6e.bin as the firmware to be flashed.

...
image
...

Refresh button on Connect radio page

A refresh button on the "Connect radio" stage of the DFU firmware flashing sequence would be great if possible, for when you have changed radios within a single session. As the same DFU VID:PID is detected, but Buddy seems to also be using the serial number, which changes from device to device. So you need to click "Add new device" and pick it again else the flash will fail.

QoL: Ensure user knows how to DFU mode flash

Stage two (connect radio) should probably have a message that informs the user that their radio should be either OFF or DFU button held down on connection (if their radio has that requirement - e.g. TPro, T20, NV14/EL18, PL18).

Module / RX version formatting

Nightly build for TX16S, 2.8.0-nightly (ba814db3), places the 'e' from Multimodule on a second line while there is plenty of space to slide the version to the right.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.