Coder Social home page Coder Social logo

wtfos's Introduction

About

wtfos is a community framework for modifying the firmware of DJI FPV Goggles and Air Units enabled by margerine.

It includes anti-bricking measures, a configurator, a package manager, a service manager and a vendor service modification framework.

You can support the project on Open Collective and join us on our Discord.

Video Guide

See Mad's Tech's getting started guide.

Mad's Tech wtfos getting started guide

Compatability

Goggles V2

wtfos-configurator only supports rooting on the V01.00.0606 firmware. This firmware version must be displayed in the DJI FPV mode, DJI Digital FPV system a.k.a. DIY mode menus can lie about the actual installed firmware version.

If on any other version or in doubt please use butter to downgrade first.

All other Devices

wtfos-configurator supports rooting on V01.00.0606 or V01.00.0608 firmware. It is compatible with:

  • DJI Air Unit
  • DJI Air Unit Lite a.k.a. Caddx Vista a.k.a. Runcam Link
  • DJI FPV Goggles V1

O3 Devices

There are currently no plans to support the O3 Air Unit, Goggles 2 or Goggles Integra.

Setup and usage

Use the configurator to root your device, install wtfos and manage community provided packages.

Built In Features

Brick prevention

To offer some degree of protection against messing things up, wtfos-system makes a copy of your system partition and mounts it over the real one early during startup.

You can skip this and other wtfos loading procedures by holding down the bind button on your device during bootups and waiting to hear 3 short beeps from the buzzer for confirmation.

Then your device should be booted with any modifications skipped at startup to the original system partition and you should once again have access to the device via ADB.

OPKG package management

The opkg package manager is available with fpv-wtf/opkg-repo added as a source.

Everything is installed in /opt/ (which is a symlink to /blackbox/wtfos/opt/) which is added your your path automatically by the scripts in /blackbox/wtfos/mkshrc.d/.

The easiest way to browse and manage packages is via the the configurator.

Advanced usage

For command line usage instructions see the opkg wiki page for using the opkg command in the cli.

Service management

Use dinit which is available in the repository for advanced service management with dependencies, enabling/disabling of units and more.

Users can manage services with the configurator or the dinitctl command in the cli.

Packages wishing to use dinit should depend on it and install their unit in /opt/etc/dinit.d/.

Uninstalling

Should you wish to return to the plain adb root hack, use the configurator to uninstall wtfos.

To also remove adb access and restore compatibility with the Assistant on all the V1 gear run the following in the shell:

wtfos-remove-adb
reboot

V2 Goggles do not require removal of adb to work with Assistant.

I need help

Hop on our Discord.

Developers

For a guide on the basics of wtfos packaging see D3VL's blog post. For native development use the Android NDK to build binaries with a target of android-23 and platform of armeabi-v7a.

Check out the wtfos wiki and the following repos:

Support the effort

If you'd like, you can support the project on Open Collective, send some ETH to 0xbAB1fec80922328F27De6E2F1CDBC2F322397637 or BTC to 3L7dE5EHtyd2b1tXBwdnWC2MADkV2VTbrq.

Credits

Based on the margerine root method. Please blame:

  • j005u for wtfos-system and wtfos-modloader
  • stylesuxx for wtfos-configurator
  • bri3d for msp-osd
  • funnel for a bunch of the tweaks

wtfos's People

Contributors

j005u avatar loudnl avatar mavenius avatar stylesuxx avatar xsnoopy 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  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  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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

wtfos's Issues

OSD Layout messed up if goggles are rebooted

After the initial connection, where the OSD elements are in their correct location, I disconnected my goggles battery to test the behavior with a battery swap.

After the connection between the goggles and the air unit is re-established, the OSD is unusable. There are some random digits scattered around the screen. If turn the power to the air unit OFF/ON, the OSD starts working again. I have the air unit on a switch, so I'm not rebooting the FC.

I'm using WTFOS with iNav 4.1

Thanks

Video out broken

Goggles v1 video out via digiview app doesn't work after flashing wtfos and osd package. Is there a work around to fix this?

Updated to 01.02.0015 not able to root

Hello,

I am not able to install wtfos because I updated to 01.02.0015, are you working on a hack to root from this version or is this to be considered hopeless?

Goggles V1 and Air unit don't show the OSD after installing WTFOS stuff, dont show quad battery status and DJI assistant 2 show error: Cannot load firmware list (4-10)

Hi,
today I tried to unlock the full betaflight OSD through WTFOS.
Root process, also installing WTFOS and packages (FCC and msp_osd) done, CLI and other Betaflight was set according to JB video.
But alfter all of that, OSD in goggles not showing up, quad battery voltage is gone and when I trying to open firmware list at DJI Assistant 2 it shows error with code:
Cannot load firmware list. (4-10)
This error show for both devices - goggles and air unit.
Custom OSD is ON in goggles
In goggles I just see at the right bootom corner: OSD WAITING...
I can change every setting via goggles so I think the vista works.
What can I do for showing battery voltage at least please?
Before applying WTFOS I got batt and also GPS values (Home point direction, distance and GPS position of quad).
Now they just disapear.
Dump file attached
Thank you

BTFL_cli_Nazgul5_V2_20221014_224333.txt

Non wtfos Audience Mode Poor Quality

For a few weeks I've been flying my wtfos at the club and my fellow flyers, who don't have wtfos, have claimed my caddx video feed is barely watchable. High pixelation and video drop out (for them, not me). Today, at the field, I uninstalled wtfos and suddenly they could watch my feed again with a marked improvement.

Of note: I'm using the v1 Goggles and they didn't seem to have an issue with my wtfos air unit/ goggles, just the caddx/ goggles.

Of course, I'm only a sample size of 1, but there seems to be something going on.

Slot 2 active, wtfos should be installed in Slot 1

In order to use the O3 Air Unit, the firmware version 01.04.00.00 has been upgraded, and the WTFOS cannot be reinstalled. When connected to the configurator, the system will prompt 'Slot 2 active, wtfos should be installed in Slot 1'. After clicking the automatic repair, the option to switch to the O3 Air Unit will disappear.

Failed health checks

Failed health checks

Don't worry, this is normal and can happen due to various reasons, including bugs in the underlaying operating system. The configurator can help you fix these issues. When attempting an automated fix, your device might reboot in the process. In some specific cases you may need to re-root your device after a reboot, before health checks can continue.

  • set -e
  • check
  • grep /dev/loop
  • mount
  • grep -q '#wtfos' /system/bin/prestart_dji_system.sh
  • grep -q '#these are leftovers' /system/bin/prestart_dji_system.sh
  • echo 'wtfos is installed but system.img is not mounted, please try re-installing wtfos'
    wtfos is installed but system.img is not mounted, please try re-installing wtfos
  • return 1

Feature Request: Enable Audience mode regardless of 50Mbit/s mode

One of the most dreaded issues when flying in a group is being unable to join in with the audience mode when the goggle is still set to 50mbit/s mode. Connecting a quad usually is not a good idea as it will probably cost a pilot his signal.

I think it would probably be an easy patch to enable 25/50 mbit/s switching regardless of being connected to a vista/air unit. This way the patch could also just always allow audience mode and switch to 25mbit/s when selecting that.

Flashing firmware on rooted Vista via adb

My vista only outputs 25 mbps, even though goggles are set to 50mbps and channel 1 is selected. So I think the old firmware (V01.00.0300) is problem. (I rooted before even updating). Trying to update to newer V01.00.0600 for the 50mbps stream. Device has already been rooted successfully, so OSD and power hacks work, but not 50mbps.

For some reason, cannot be updated on DJI Assistant 2 app, it is able to recognize air unit lite, but not any firmware on it.

I have successfully used adb to push the downloaded .bin firmware onto the vista, and then use the shell and run update_engine, the output is '2'. Next is the reboot, afterwhich there is no difference in performance or firmware version.

Thanks for any tips!

Alpha but how much alpha?

Hey, I want to give it a try. You mentioned it is "very alpha" and of course everything I am doing is my own risk, but I want to know what kind of risk we are talking about.

If I use margerine payload and install the msp osd from bri3d should I look for something that can go wrong? For instance you mentioned in an issue that crashdumps could fill up the space. Is this catastrophic if it happens? Is it reversable with the bind button during startup?

Should I do something to have the bind button safety enabled or is it there by default?

Thanks, cant wait to give it a try.

Ensure a bad copy of system.img doesn't stick around

This can happen because system_1 is corrupt i n subtle ways or hypothetically if something goes wrong (a la bitflip) during copying the partition.

  1. needs more robust methods of detecting problems. e2fs check? straight up checksum of the partition?
  2. need to review install/uninstall scripts to be robust against previously errored states

Compatibility with different OS versions and upgrades

WTFOs itself can in principle support many FW versions (margerine can't!). However we need to account for the following:

  • changed selinux offset in kernel
  • a change of the base fw version requires wiping of system.img as well as /opt so that the bindmount isn't with a mismatched version and so that any packages that modify /system directly in their postinst are re-applied
  • the previous change can happen in a manner where we only find out when re-installing wtfos - and it needs to be detected at the configurator already?
  • any packages that depend on fixed memory addresses must both be able to adjust their offsets at runtime as well as enumerate supported fw versions (more arches?)

Installing on 2nd slot fails

We've had multiple reports that when wtfos is installed in the 2nd slot (currently inactive) wtfos install will seem to succeed, but not actually work.

Needs investigation from both the installer side, but also possibly mechanisms for detecting when the wtfos slot was switched away from and recover somehow?

The problem is we don't necessarily know why the slot was switched away from. Should we automatically recover the 2nd slot from the currently active one's flash? Should we let the user know it's time for intervention?

Reboot on installing wtfos

After rooting a airunit, it keeps rebooting when trying to install wtfos.
First time rooting failed, after removing the sd card that was in it it worked.
Now it just reboots on installing wtfos, and keeps looping.

Rooting again doesn’t help
Reflashing in dji assistant not possible.

is there any way to hard reset of force installation?

Goggles are not found

Hello,

my goggles are not on the list when trying to connect to configurator but they are when attempting to root. I've done the root thing but still can not connect goggles to configurator because it is not on the list of devices. What am i doing wrong?

Wiki Cleanup

I went through the wiki and tried to clean up links a bit, the following things caught my eye:

  • Activation: I think we should state the configurator as primary resource for rooting, donation link should probably point to OC - if we want to keep it there at all.
  • Possible Features: since this lives in the Projects now, maybe it would make sense to double check if we "moved" all the tasks and then rewrite the page to link to the Project and explain the intent a bit?
  • Full transmission power: I think we should also mention here that this can be unlocked via the fcc-unlock package if wtfOS is installen.

Some data Blinking and some data not showing

Hello, I have rooted 2 drones, on one of them there is a softserial connection, so I can understand it's not perfect

but I'm having the exact same problem also on a Kakute F7 with 7 real UARTS

Basically some items are blinking (for example my name) and other things (like altitude) are not showing at all
Other things, like crosshair, hud "roll bars" and total battery voltage are perfect.
Single cell voltage instead it's not working

tried to switch missing items on/off, changed place in the osd, no luck.
same for the blinking ones

What I can do?

Betaflight 4.2.8
Dji Goggles v2
Caddx Vista
FW 1.00.0606 on both

thanks a lot

Goggles V2 locked waiting for an update

I bought an DJI FPV combo, but i did the mistake to connect it to DJI Fly app.
So now it's locked, impossible to go into the menu. the actual firmware is V01.02.0000
i tried drone hack to flash V01.02.0001 or V01.02.0020 but it's not working.
it's a trap from DJI to force update, some user after many attempts got it work with drone-hacks but for me it's not working.

Do i need to let DJI win and flash V01.02.0015 or is there a hope in the future ?

Feature Request: Separate video recording switching on Air Unit.

The problem:

There is often need to switch video record on air unit, without switching it on goggles.

Someties during flight you need to switch air unit recording on, sometimes you need to switch it off, but in 99% of this cases you DO NOT need to toggle goggles recording at the same time.

My suggestion:

No matter what setting is in menu "Recording device: Goggles/Both",

  • LONG (maybe user configurable time, I think default about ~1,5s) pressing Record button on goggles should toggle air unit recording.

  • NOT AFFECTING recording state of the goggles.

But SHORT pressing of Rec button should act just as it does now - toggle recording on goggles or both goggles/unit depending on setting in menu "Recording device".

p/s: sorry for my English

Is it possible to fcc hack the DJI FPV drone on latest firmware?

I love the DJI FPV drone due to the gimbal, superior image, and position hold for flying in mountains. Since I was forced to upgrade to latest 1.04 firmware to support DJI o3 Air unit I traded in the b3yond fcc hack that is now nolonger working. Is it technically possible to do a fcc hack by wtf for the DJI FPV drone? Is it possible to roll back the DJI FPV firmware only and not the others with the root?

Feature Request for av in screen resolution

Hi,
I just wanted to know if wtfos is capable of changing the aspect ratio or the resolution when using av in v1 or v2 goggles? it is so inconvenient for many users who are using analog with v1 and v2 goggles as the image size is much smaller

Feature Request: allow version mismatch?

I have not tested this yet, but did not see it written anywhere in the docs.

DJI is very strict about everything being on the same firmware version.
My guess would be it doesnt matter as much as they demand.

Would it be possible to allow for version mismatch between goggles/controller/flight unit?

btw I love this project so much, thank you for helping keep our hardware in our own control.

Air unit stuck in a connected/disconnected loop (no video)

I can't seem to get my dji air unit to work after rooting and installing WTFOS.. I don't get video and it seems to just boot loop. I am getting a repeating on and off usb connection. I'm not able to connect to the air unit via usb though.. Any help is greatly appreciated.
I was able to root it and install the OSD mod but now it just loops...

Camera flip option missing

after installing and using the wtf os found that the camera options menu is grayed out and so can no longer access the menu item to flip the camera for a build that has it installed upside down. Whats the fix here besides having to move the actual camera?

Power issues can kick the user into slot 2

(We think) it's possible to mark slot 1 as unbootable by quickly cycling power during boot and having the BL consider the previous boot unsuccessful.

We can combat this either by detecting the situation (in case of status_bootable 0 try booting once anyway, if failed actually corrupt) or by just installing ourselves in both slots.

Blackbox cleanup

The original startup scripts would format /blackbox if the disk was past some (32M?) threshold of free space.

This gets disabled as part of the startup script modifications, so we need to add some mechanism to clean up logs and crash dumps to the partition doesn't fill up completely.

Crashdumps can particularly get out of hand when a DJI service goes into a crash loop.

Video out breaks with WTFOS

Scattered reports (including myself having some issues) of video out becoming unusable/unstable with wtfos.

Need to investigate.

Have voltage on OSD but no RSSI, LQ or cronometer

Hello good people

I've just installed on DJI V1 goggles, WTF, the OSD and power packages. From the items I chose on OSD, only disarmed and voltage are displayed, no LQ, RSSI dbm, warnings or cronometer. I'm using ELRS Happymodel EP1 and sensors are working. Any ideas? Thank you.

Using inav and betaflight running in 1 googles

hi, im using betaflight for my fpv quadcopter, 3 of them working great,
but i have one question....
i see the font for the inav and betaflight its different,? right/

so, can i running betaflight font (which already insert it into googles mmc)
in case use it with INAV too?
or i have to replace the font in the google, everytime i change my betaflight quadcopter to my inav fixed wing?

thanks before

Feature request: Allow FPV Controller 2

With the newest firmware DJI has enabled the FPV Controller 2 for use with the Caddx Vista etc., but then you can not use the Googles v2.

Would it be within the scope of this project to enable support for the Googles v2 with the FPV Controller 2 on the Vista?

Would be awesome!

Temperature of the Air Unit

Please tell me, is there a theoretical possibility to display the temperature of the Air Unit on the MSP Display?

Feature Request: Blutooth connectivity for simple telemetry data

I politely apologize if this is not the appropriate place for an idea, suggestion or feature request.

I've been wishing since my first DJI FPV flights that I could see the quad's telemetry data directly on my smartphone. More specifically, the serial quad data packages (srt file data) coming into the goggles would be passed through to a simple Bluetooth module, and the Bluetooth module would send that data to a connected Android or Apple smartphone. The data could be received and stored there with a simple smartphone app.

Use case:s

  • GPS data would be displayed in real time on the smartphone: Where exactly is the quad at the moment? The GPS data could be forwarded directly to Google Maps. The flight path could be displayed as well. Where exactly is the last received GPS coordinate and where is it likely to have crashed based on the flight path? So: no more copying coordinates from your glasses and typing them into Google Maps.
  • Lost eye on Li-Ion voltages? Configure an acoustic alarm on your smartphone.

Would that be possible?

How to change OSD font?

Any idea how to change the fonts? Font stays the same in goggles regardless what I choose in BF

Communication error on v1 goggles to air unit lite

when i want turn on auto temp control or other device setting nothing happend.
also settings for mbit focus ect.

camera settings also not able to change.

i booted without hack. all ok.
then i turned live audio service in goggles off. reboot- all ok. i have this on becouse i have a air unit also.

hope this helps

my setup:
goggles v1 fcc hack
air unit lite fcc hack nebula pro solo, without fc

Switching recording mode from caddx vista to air unit

I fly with fixed wings and quadcopters, on fixed wings I use air units and on quadcopters I use caddx vista.
I like to record videos on the air units, but when I change from quadcopter to fixed wing, the recording on the air unit is disabled and I often forget to reactivate it from the glasses.
there would be no way that the glasses automatically switch the recording mode according to the unit used?

can't find the caddx vista(dji air unit lite) when root device

I had root my DJI goggles V1 and all are okay.
when I want to root my caddx vista it is not shown on the pop list box.
but my computer can recognize that and it's shown in the DJI assistant app also.
my computer is 2019 macbook pro and it's still not shown when I try to root on a win 10 labtop.
P.S. I use google chrome app and all are the least version.

I had spent two nights to try to solve it and can't figure out how to do.
I installed the CDC serial driver and the bulk interface driver on my computer and it doesn't work.
please help me.
thanks so much.

Luke

Cannot update through Assistant my rooted units

Today i tried to update my rooted units and vistas to make them compatible with Goggles 2. Unfortunately with no success. Both type unit and vista were recognized by DJ assistant (both consumer an FPV versions), but no firmware was listed. Only error to obtain firmware 4-10 error. I tried a lot of things. In the end I decided to update an unrooted vista and voila - no issues. I am on mac. So obviously DJI has locked in some way updates for rooted devices. I guess my only option is to remove the root, but could not find info how to do it on the units. My goggles v.2 will remain rooted for other reasons, but I move to goggles 2 and now i can not update my rooted hardware for the purpuse. Any suggestions guys?
C5CC8E5F-7E82-422A-AAE5-ACCE46B5D132

Garbled OSD Elements

I have experienced an issue with a caddx vista, goggles v1 that are rooted, rubbing inav 5.1 where th osd elements are garbled and mixed up on screen if the air raft unit is powered before the goggles. It does this reliably. If th bgoggles are powered first then it is fine.
20220925_085942

Feature request: Add delay to recording stop after disarming.

I'm using WTFOS happily on all three systems - INAV, BF, AP and I was wondering if it would be possible to add a small delay between vtx/goggles recieving the 'disarmed' message and actually stopping recording. I don't know, maybe something like adjustable 2-10 seconds delay? This way it would be better to have the OSD stats screens recorded as for the moment it ends up in only a couple of frames of recording, in case of INAV it actually records the first page of stats only.

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.