GithubHelp home page GithubHelp logo

firmware-8bitdo's Introduction

fwupd

Build Status CodeQL Coverity Scan Build Status Fuzzing Status CircleCI Coverage Status OpenSSF Scorecard OpenSSF Best Practices

This project aims to make updating firmware on Linux automatic, safe, and reliable.

Additional information is available at the website.

Where to get help?

  • GitHub issues & discussions in this repository
  • Libera IRC channel #fwupd. You can join through Libera's IRC or via the IRC bridge on Matrix.

Compiling

See Building and Debugging for how to build the fwupd development environment.

NOTE: In most cases, end users should not compile fwupd from scratch; it's a complicated project with dozens of dependencies (and as many configuration options) and there's just too many things that can go wrong.

Users should just have fwupd installed and updated by their distro, managed and tested by the package maintainer. The distribution will have also done some testing with how fwupd interacts with other software on your system, for instance using GNOME Software.

Installing fwupd using Snap or using Flatpak might be useful to update a specific device on the command line that needs a bleeding edge fwupd version, but it should not be considered as a replacement to the distro-provided system version.

Using Tartan

Tartan is a LLVM static analysis plugin built to analyze GLib code. It can be installed and then run using:

mkdir build-tartan
CC=clang meson ../
SCANBUILD=../contrib/tartan.sh ninja scan-build

LVFS

This project is configured by default to download firmware from the Linux Vendor Firmware Service (LVFS).

This service is available to all OEMs and firmware creators who would like to make their firmware available to Linux users.

You can find more information about the technical details of creating a firmware capsule in the hardware vendors section of the fwupd website.

Basic usage flow (command line)

If you have a device with firmware supported by fwupd, this is how you can check for updates and apply them using fwupd's command line tools.

# fwupdmgr get-devices

This will display all devices detected by fwupd.

# fwupdmgr refresh

This will download the latest metadata from LVFS.

# fwupdmgr get-updates

If updates are available for any devices on the system, they'll be displayed.

# fwupdmgr update

This will download and apply all updates for your system.

  • Updates that can be applied live will be done immediately.
  • Updates that run at bootup will be staged for the next reboot.

You can find more information about the update workflow in the end users section of the fwupd website.

Passim

If the Passim project is also installed and enabled, fwupd will re-publish the downloaded metadata file to be served on 0.0.0.0:27500 by default.

Other clients on the same network can make use of this via mDNS/LLMNR to reduce network bandwidth to configured remotes.

To disable this functionality either set P2pPolicy=none in /etc/fwupd/daemon.conf, uninstall the passim package or use systemctl mask passim.service on the terminal.

Reporting status

fwupd will encourage users to report both successful and failed updates back to LVFS. This is an optional feature, but encouraged as it provides valuable feedback to LVFS administrators and OEM developers regarding firmware update process efficacy.

The privacy policy regarding this data can be viewed on the lvfs readthedocs site.

To report the status of an update, run:

# fwupdmgr report-history

Only updates that were distributed from the LVFS will be reported to the LVFS.

Enterprise use

The flow of updates can be controlled in the enterprise using the "approved updates" feature. This allows the domain administrator to filter the possible updates from a central server (e.g. the LVFS, or a mirror) to only firmware that have been tested specifically in your organization.

The list of approved updates can be enabled by adding ApprovalRequired=true to the remote configuration file, e.g. lvfs.conf. Once enabled, the list of approved updates can be set in fwupd.conf using a comma-delimited list.

For example:

ApprovedFirmware=foo,bar

Where foo,bar refers to the container checksums that would correspond to two updates in the metadata file.

Additionally, the list of approved firmware can be supplemented using fwupdmgr set-approved-firmware baz or using the D-Bus interface.

Other frontends

fwupdmgr is a command line client, but various additional graphical frontends are enumerated in the fwupdmgr man page.

firmware-8bitdo's People

Contributors

hughsie avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar  avatar

Forkers

isabella232

firmware-8bitdo's Issues

Can't update firmware in SN30 Pro+

lsusb
2dc8:6002 8BitDo 8BitDo SN30 Pro+

With the device in Android mode I see this:
sudo fwupdtool get-devices -v
09:10:53:0766 FuDevice using 8968a3bef0b7bbcda914f444d4c5ebcda641032f for usb:01:00:07
09:10:53:0771 FuDevice removing vendor prefix of '8BitDo' from '8BitDo SN30 Pro+'
09:10:58:0779 FuEngine failed to add device usb:01:00:07: failed to retrieve from device on ep 0x81: transfer timed out

When I put the controller into firmware update mode I see this:
sudo fwupdtool get-devices -v
09:14:05:0285 XbSilo ignoring for OR statement: indexed string '6faa2765-8bc2-51d3-bf6b-ffd6312c24d2' was unfound
09:14:05:0290 FuDevice using 8968a3bef0b7bbcda914f444d4c5ebcda641032f for usb:01:00:07
09:14:05:0296 FuDevice removing vendor prefix of '8BitDo' from '8Bitdo'
09:14:05:0307 FuDevice changing verfmt for 8968a3bef0b7bbcda914f444d4c5ebcda641032f: bcd->pair
09:14:05:0307 FuDevice changing version for 8968a3bef0b7bbcda914f444d4c5ebcda641032f: 2.0->3.02
09:14:05:0315 FuPlugin emit added from ebitdo: 8968a3bef0b7bbcda914f444d4c5ebcda641032f
09:14:05:0319 XbSilo ignoring for OR statement: indexed string '78acf201-a624-5c0b-a521-e204be14e3d5' was unfound
09:14:05:0319 FuPlugin fu_plugin_device_registered(dell_dock)
09:14:05:0319 FuPlugin fu_plugin_device_registered(pci_bcr)
09:14:05:0319 FuPlugin fu_plugin_device_registered(thunderbolt)
09:14:05:0319 FuPlugin fu_plugin_device_registered(tpm)
09:14:05:0319 FuPlugin fu_plugin_device_registered(usi_dock)
09:14:05:0319 FuPlugin fu_plugin_device_registered(msr)
09:14:05:0319 FuPlugin fu_plugin_device_registered(uefi_capsule)
09:14:05:0319 FuDeviceList ::added 8968a3bef0b7bbcda914f444d4c5ebcda641032f
09:14:05:0319 FuMain ADDED:
FuEbitdoDevice:
DeviceId: 8968a3bef0b7bbcda914f444d4c5ebcda641032f
Name:
Guid: 78acf201-a624-5c0b-a521-e204be14e3d5 ← USB\VID_2DC8&PID_5750&REV_0200
Guid: b02f1319-c1c4-54f4-b7f2-5bb3552f6a9e ← USB\VID_2DC8&PID_5750
Serial: BootMod
Summary: A redesigned classic game controller
Plugin: ebitdo
Protocol: com.8bitdo
Flags: updatable|registered|is-bootloader|add-counterpart-guids
Vendor: 8BitDo
VendorId: USB:0x2DC8
Version: 3.02
VersionFormat: pair
VersionRaw: 0x0000012e
Icon: input-gaming
InstallDuration: 120
Created: 2022-03-02
PhysicalId: usb:01:00:07
CustomFlags: is-bootloader
PossiblePlugin: ebitdo
ParentPhysicalIds: usb:01:00,usb:01
InternalFlags: replug-match-guid|is-open
UsbDeviceClass: interface-desc

Still can't get fwupdate to actually update the firmware

fwupdmgr get-devices
To Be Filled By O.E.M.

├─
│ Device ID: 8968a3bef0b7bbcda914f444d4c5ebcda641032f
│ Summary: A redesigned classic game controller
│ Current version: 3.02
│ Vendor: 8BitDo (USB:0x2DC8)
│ Install Duration: 2 minutes
│ GUIDs: 78acf201-a624-5c0b-a521-e204be14e3d5
│ b02f1319-c1c4-54f4-b7f2-5bb3552f6a9e
│ Device Flags: • Updatable
│ • Is in bootloader mode

If I do sudo fwupdtool get-updates:
Devices with no available firmware updates:

That is a blank line.

fwupdmgr --version
client version: 1.7.4
compile-time dependency versions
gusb: 0.3.5

daemon version: 1.7.4

8bitdo SF30 Pro/ SN30 Pro incorrect firmware from LVFS repo!

8bitdo SF30 Pro controller has an incompatible firmware file in the LVFS repo.

Big tipoff is the firmware version jump - 1.29 to 6.10

Look like they made a mistake in submitting the firmware from the SF30 - the SF30 Pro is a different controller.

Checking their support page shows that the latest firmware for the SF30 Pro/SN30 Pro is indeed 1.29, and the latest for the SF30/SN30 is 6.10.

I think the 6.10 for the SF30 Pro/SN30 Pro needs to be pulled immediately. I thought I had bricked my controller, luckily I was able to downgrade, but I had to use the snap version of fwupd to do so, as the deb version in the Bionic repos won't allow a downgrade for some reason.

I was able to recover, but we should save others from that pointless struggle. :)

$ fwupdmgr --version
client version:	1.2.4
checkout info:	1.2.4
compile-time dependency versions
	gusb:	0.3.0
	efivar:	37
daemon version:	1.2.4
$ fwupdmgr get-devices
8Bitdo SF30 Pro
  DeviceId:             ef5791f75bea792344af5e07f52d4bb54563221c
  Guid:                 e95bfb47-11f9-5afd-856e-fbc45730456d
  Guid:                 269b3121-097b-50d8-b9ba-d1f64f9cd241
  Guid:                 5bc60e62-f461-58bd-91b6-7de3392f8bd6
  Guid:                 afa5518d-7c55-51cb-8e1c-bf3b11b67dfa
  Guid:                 cee9c5bc-aa12-51eb-a220-d0ef588d7cb2
  Guid:                 571229d5-caed-5cbc-91c1-5c216601a194
  Guid:                 043c7673-bd45-5e2e-b8b9-c22df2dfec2a
  Guid:                 b02f1319-c1c4-54f4-b7f2-5bb3552f6a9e
  Summary:              A redesigned classic game controller
  Plugin:               ebitdo
  Flags:                updatable|supported|needs-bootloader|registered
  Vendor:               8Bitdo
  VendorId:             USB:0x2DC8
  Version:              1.29
  Icon:                 input-gaming
  Created:              2019-02-18

OS: Ubuntu 18.04.2 LTS
Package source: Initially via APT (fwupd 1.0.9-0ubuntu2), then uninstalled that version in favor of the newer snap package

Firmware 1.30 available for 8bitdo SN30Pro

Not sure where to post this but firmware 1.29 is currently available from the 8bitdo website 1 for the SN30Pro device. A quick glance in LVFS also indicates that multiple 8bitdo firmwares are out-of-date in fwupd. Would it be possible to update those to the latest 8bitdo release?

Thanks!

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.