Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

raspberrypiWirelessFirmware: init #41327

Merged
merged 1 commit into from Jul 12, 2018

Conversation

lopsided98
Copy link
Contributor

Motivation for this change

The builtin wifi and bluetooth radios do not currently work in NixOS on the RaspberryPi 3 and Raspberry Pi Zero W, because some firmware files are missing.

Things done

This PR adds a package containing the missing wifi and bluetooth firmware and adds it to enableRedistributableFirmware. Some of the firmware files also exist in firmwareLinuxNonfree, but this package contains newer versions. Therefore, it must be placed later it the list to overwrite the files from firmwareLinuxNonfree.

I have not actually tested bluetooth, but wifi now works out of the box with this PR.

  • Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS)
  • Built on platform(s)
    • NixOS
    • macOS
    • other Linux distributions
  • Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
  • Tested compilation of all pkgs that depend on this change using nix-shell -p nox --run "nox-review wip"
  • Tested execution of all binary files (usually in ./result/bin/)
  • Fits CONTRIBUTING.md.

@lopsided98
Copy link
Contributor Author

cc @dezgeg

@dezgeg
Copy link
Contributor

dezgeg commented Jun 4, 2018

Sounds good. Though maybe I'd enable this only on ARM/aarch64 by default given that it's not really useful outside of Raspberry Pis.

@danielfullmer
Copy link
Contributor

I can confirm wifi works perfectly on my RPI 3 with this firmware.

matthewbauer referenced this pull request Jun 22, 2018
Following legacy packing conventions, `isArm` was defined just for
32-bit ARM instruction set. This is confusing to non packagers though,
because Aarch64 is an ARM instruction set.

The official ARM overview for ARMv8[1] is surprisingly not confusing,
given the overall state of affairs for ARM naming conventions, and
offers us a solution. It divides the nomenclature into three levels:

```
ISA:             ARMv8   {-A, -R, -M}
                 /    \
Mode:     Aarch32     Aarch64
             |         /   \
Encoding:   A64      A32   T32
```

At the top is the overall v8 instruction set archicture. Second are the
two modes, defined by bitwidth but differing in other semantics too, and
buttom are the encodings, (hopefully?) isomorphic if they encode the
same mode.

The 32 bit encodings are mostly backwards compatible with previous
non-Thumb and Thumb encodings, and if so we can pun the mode names to
instead mean "sets of compatable or isomorphic encodings", and then
voilà we have nice names for 32-bit and 64-bit arm instruction sets
which do not use the word ARM so as to not confused either laymen or
experienced ARM packages.

[1]: https://developer.arm.com/products/architecture/a-profile
@lopsided98 lopsided98 force-pushed the raspberrypi-wireless-firmware branch from ee1e510 to 0ff9427 Compare June 23, 2018 22:36
@lopsided98
Copy link
Contributor Author

Oops, I just realized that I made the change you requested a few weeks ago, but never pushed it.

@dezgeg dezgeg merged commit 7c76311 into NixOS:master Jul 12, 2018
@lopsided98 lopsided98 deleted the raspberrypi-wireless-firmware branch July 12, 2018 14:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants