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

[Feature request] Linux ARM support #952

Closed
DylanVanAssche opened this issue Jun 29, 2019 · 45 comments
Closed

[Feature request] Linux ARM support #952

DylanVanAssche opened this issue Jun 29, 2019 · 45 comments
Assignees
Labels
feature request For issues asking for new features

Comments

@DylanVanAssche
Copy link

It would be nice to get the Mullvad VPN app and daemon running on ARM platforms.
Support for armv7hl and aarch64 would be appreciated!

This is ideal for using Mullvad as a VPN on DIY NAS systems. Most of these setup have some kind of SBC like a Raspberry Pi or Odroid running an ARM processor.

@faern
Copy link
Member

faern commented Jul 1, 2019

You should be able to build the system service and the CLI for these platforms pretty easily. We have experimentally built the mullvad-daemon and mullvad-cli on a Raspberry PI running Raspbian a while back, and it worked. I have no idea how the Electron frontend would handle it, or if it would work at all. But for a NAS system or similar you probably just want the CLI anyway I assume.

Sadly we can't prioritize building and distributing ready made binaries for more platforms at the moment, but we hope to expand on this in the future.

@DylanVanAssche
Copy link
Author

DylanVanAssche commented Jul 1, 2019 via email

@DylanVanAssche
Copy link
Author

I tried to build the daemon with the instructions from the README. I used the 2019.5 tag from the repository.
However, the build fails:

error: failed to run custom build command for `nftnl-sys v0.2.0 (https://github.com/mullvad/nftnl-rs?rev=86b30cdc38a6d4b30a900c21f7c644857d6f7401#86b30cdc)`
process didn't exit successfully: `/home/dylan/mullvadvpn-app/target/debug/build/nftnl-sys-a996a2d6dbc31a22/build-script-build` (exit code: 101)
--- stdout
cargo:rerun-if-env-changed=LIBNFTNL_LIB_DIR

--- stderr
thread 'main' panicked at 'libnftnl library directory does not exist: /home/dylan/mullvadvpn-app/dist-assets/binaries/linux', /home/dylan/.cargo/git/checkouts/nftnl-rs-b059fb7707392f34/86b30cd/nftnl-sys/build.rs:31

warning: build failed, waiting for other jobs to finish...
error: failed to run custom build command for `mnl-sys v0.1.0 (https://github.com/mullvad/mnl-rs?rev=f0d19501b9b85be9a1ffaec8317a378bcbdf4fa6#f0d19501)`
process didn't exit successfully: `/home/dylan/mullvadvpn-app/target/debug/build/mnl-sys-994aef68815c5d4e/build-script-build` (exit code: 101)
--- stdout
cargo:rerun-if-env-changed=LIBMNL_LIB_DIR

--- stderr
thread 'main' panicked at 'libmnl library directory does not exist: /home/dylan/mullvadvpn-app/dist-assets/binaries/linux', /home/dylan/.cargo/git/checkouts/mnl-rs-87c20d71e5af71c2/f0d1950/mnl-sys/build.rs:17:13

I checked and made sure that the libmnl and libnftnl libraries are installed on my Ubunty 18.04 LTS ARM installation. I also installed the developer packages -dev, just in case.

@faern
Copy link
Member

faern commented Jul 3, 2019

Ah, Ok. Yeah it won't help to install the libraries to your system. We use our own bundled versions that we have statically compiled. These exist in a submodule in dist-assets/binaries. Check so you actually have this checked out? Do you have files in dist-assets/binaries/linux/?

So.. These libraries must be built for ARM then as well I guess. Same goes for OpenSSL and OpenVPN. Sadly this complicates stuff a bit. But the README in the binaries submodule (dist-assets/binaries/README.md) should contain instructions for all of this.

Remember that to do this you must recursively check out all submodules now, the shallow clone from the README you followed won't be enough now since you need the libnftnl and openssl sources etc, which in turn are submodules to the binaries submodule.

I hope you get it to work.

@faern
Copy link
Member

faern commented Jul 3, 2019

If you manage to get it to work it would be very appreciated if you posted here how you did it. That way it can help others before we release any official builds. It could also help us speed up the implementation of doing these builds officially :)

@DylanVanAssche
Copy link
Author

DylanVanAssche commented Jul 3, 2019

Hmmmm, yeah that requires to rebuild each bundled library.
Let see where I get and I will document the process here anyway.

If I get stuck, I will let you know :)

EDIT: dist-assets/binaries is empty :(

@faern
Copy link
Member

faern commented Jul 4, 2019

EDIT: dist-assets/binaries is empty :(

Run git submodule update --init --recursive

@DylanVanAssche
Copy link
Author

error: failed to run custom build command for `nftnl-sys v0.2.0 (https://github.com/mullvad/nftnl-rs?rev=86b30cdc38a6d4b30a900c21f7c644857d6f7401#86b30cdc)`
process didn't exit successfully: `/home/dylan/mullvadvpn-app/target/debug/build/nftnl-sys-a996a2d6dbc31a22/build-script-build` (exit code: 101)
--- stdout
cargo:rerun-if-env-changed=LIBNFTNL_LIB_DIR
Minimum libnftnl version: 1.1.0

--- stderr
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: Failure { command: "\"pkg-config\" \"--libs\" \"--cflags\" \"libnftnl >= 1.1.0\"", output: Output { status: ExitStatus(ExitStatus(256)), stdout: "", stderr: "Requested \'libnftnl >= 1.1.0\' but version of libnftnl is 1.0.9\nYou may find new versions of libnftnl at http://netfilter.org/projects/libnftnl/\n" } }', src/libcore/result.rs:997:5
note: Run with `RUST_BACKTRACE=1` environment variable to display a backtrace.

This is the first library that fails the build process. It complains about a too old version of the library.
I tried to checkout the master branch instead (and build the library there), but the same message appears. Am I doing something wrong, or is the library really outdated?

These are my build steps:

cd mullvadvpn-app/dist-assets/binaries/libnftnl
sh autogen.sh
./configure
make -j8

@faern
Copy link
Member

faern commented Jul 7, 2019

Have you made sure it did produce/you copied? dist-assets/binaries/linux/libnftnl.a?

This is what our own makefile should do for you if you just

cd dist-assets/binaries
make libnftnl

like the binaries repo readme states

@DylanVanAssche
Copy link
Author

Alright I tried to build libnftnl, openvpn and update_openssl.
Unfortunately, all 3 builds are failing...

libnftnl

cp libnftnl/src/.libs/libnftnl.a linux/
cp: cannot stat 'libnftnl/src/.libs/libnftnl.a': No such file or directory
Makefile:143: recipe for target 'libnftnl' failed
make: *** [libnftnl] Error 1

Libnftnl compiles all the way, but at the end this error occurs. For some reason, the library file isn't created?

openvpn & update_openssl

gcc  -I. -Icrypto/include -Iinclude -DNDEBUG -DOPENSSL_NO_DYNAMIC_ENGINE -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/home/dylan/mullvadvpn-app/dist-assets/binaries/build\"" -DENGINESDIR="\"/home/dylan/mullvadvpn-app/dist-assets/binaries/build/lib/engines-1.1\"" -Wall -O3  -march=armv7-a -Wa,--noexecstack  -MMD -MF crypto/ec/ecp_nistp224.d.tmp -MT crypto/ec/ecp_nistp224.o -c -o crypto/ec/ecp_nistp224.o crypto/ec/ecp_nistp224.c
crypto/ec/ecp_nistp224.c:45:9: error: unknown type name '__uint128_t'
 typedef __uint128_t uint128_t;  /* nonstandard; implemented by gcc on 64-bit
         ^~~~~~~~~~~
crypto/ec/ecp_nistp224.c: In function 'widefelem_diff':
crypto/ec/ecp_nistp224.c:439:51: warning: left shift count >= width of type [-Wshift-count-overflow]
     static const widelimb two120 = ((widelimb) 1) << 120;
                                                   ^~
crypto/ec/ecp_nistp224.c:440:55: warning: left shift count >= width of type [-Wshift-count-overflow]
     static const widelimb two120m64 = (((widelimb) 1) << 120) -
                                                       ^~
crypto/ec/ecp_nistp224.c:441:25: warning: left shift count >= width of type [-Wshift-count-overflow]
         (((widelimb) 1) << 64);
                         ^~
crypto/ec/ecp_nistp224.c:442:59: warning: left shift count >= width of type [-Wshift-count-overflow]
     static const widelimb two120m104m64 = (((widelimb) 1) << 120) -
                                                           ^~
crypto/ec/ecp_nistp224.c:443:25: warning: left shift count >= width of type [-Wshift-count-overflow]
         (((widelimb) 1) << 104) - (((widelimb) 1) << 64);
                         ^~
crypto/ec/ecp_nistp224.c:443:51: warning: left shift count >= width of type [-Wshift-count-overflow]
         (((widelimb) 1) << 104) - (((widelimb) 1) << 64);
                                                   ^~
crypto/ec/ecp_nistp224.c: In function 'felem_diff_128_64':
crypto/ec/ecp_nistp224.c:467:53: warning: left shift count >= width of type [-Wshift-count-overflow]
     static const widelimb two64p8 = (((widelimb) 1) << 64) +
                                                     ^~
crypto/ec/ecp_nistp224.c:469:53: warning: left shift count >= width of type [-Wshift-count-overflow]
     static const widelimb two64m8 = (((widelimb) 1) << 64) -
                                                     ^~
crypto/ec/ecp_nistp224.c:471:56: warning: left shift count >= width of type [-Wshift-count-overflow]
     static const widelimb two64m48m8 = (((widelimb) 1) << 64) -
                                                        ^~
crypto/ec/ecp_nistp224.c:472:25: warning: left shift count >= width of type [-Wshift-count-overflow]
         (((widelimb) 1) << 48) - (((widelimb) 1) << 8);
                         ^~
crypto/ec/ecp_nistp224.c: In function 'felem_reduce':
crypto/ec/ecp_nistp224.c:550:55: warning: left shift count >= width of type [-Wshift-count-overflow]
     static const widelimb two127p15 = (((widelimb) 1) << 127) +
                                                       ^~
crypto/ec/ecp_nistp224.c:552:55: warning: left shift count >= width of type [-Wshift-count-overflow]
     static const widelimb two127m71 = (((widelimb) 1) << 127) -
                                                       ^~
crypto/ec/ecp_nistp224.c:553:25: warning: left shift count >= width of type [-Wshift-count-overflow]
         (((widelimb) 1) << 71);
                         ^~
crypto/ec/ecp_nistp224.c:554:58: warning: left shift count >= width of type [-Wshift-count-overflow]
     static const widelimb two127m71m55 = (((widelimb) 1) << 127) -
                                                          ^~
crypto/ec/ecp_nistp224.c:555:25: warning: left shift count >= width of type [-Wshift-count-overflow]
         (((widelimb) 1) << 71) - (((widelimb) 1) << 55);
                         ^~
crypto/ec/ecp_nistp224.c:555:50: warning: left shift count >= width of type [-Wshift-count-overflow]
         (((widelimb) 1) << 71) - (((widelimb) 1) << 55);
                                                  ^~
crypto/ec/ecp_nistp224.c:567:35: warning: left shift count >= width of type [-Wshift-count-overflow]
     output[3] += (in[6] & 0xffff) << 40;
                                   ^~
crypto/ec/ecp_nistp224.c:571:35: warning: left shift count >= width of type [-Wshift-count-overflow]
     output[2] += (in[5] & 0xffff) << 40;
                                   ^~
crypto/ec/ecp_nistp224.c:575:39: warning: left shift count >= width of type [-Wshift-count-overflow]
     output[1] += (output[4] & 0xffff) << 40;
                                       ^~
crypto/ec/ecp_nistp224.c:579:28: warning: right shift count >= width of type [-Wshift-count-overflow]
     output[3] += output[2] >> 56;
                            ^~
crypto/ec/ecp_nistp224.c:582:27: warning: right shift count >= width of type [-Wshift-count-overflow]
     output[4] = output[3] >> 56;
                           ^~
crypto/ec/ecp_nistp224.c:590:39: warning: left shift count >= width of type [-Wshift-count-overflow]
     output[1] += (output[4] & 0xffff) << 40;
                                       ^~
crypto/ec/ecp_nistp224.c:594:28: warning: right shift count >= width of type [-Wshift-count-overflow]
     output[1] += output[0] >> 56;
                            ^~
crypto/ec/ecp_nistp224.c:597:28: warning: right shift count >= width of type [-Wshift-count-overflow]
     output[2] += output[1] >> 56;
                            ^~
crypto/ec/ecp_nistp224.c:600:28: warning: right shift count >= width of type [-Wshift-count-overflow]
     output[3] += output[2] >> 56;
                            ^~
Makefile:2706: recipe for target 'crypto/ec/ecp_nistp224.o' failed
make[2]: *** [crypto/ec/ecp_nistp224.o] Error 1
make[2]: Leaving directory '/home/dylan/mullvadvpn-app/dist-assets/binaries/openssl'
Makefile:129: recipe for target 'all' failed
make[1]: *** [all] Error 2
make[1]: Leaving directory '/home/dylan/mullvadvpn-app/dist-assets/binaries/openssl'
Makefile:75: recipe for target 'openssl' failed
make: *** [openssl] Error 2

OpenVPN seems to use a GCC 64 bit feature, that's not available at ARM 32 bit GCC

@manderss99
Copy link

please consider making än official RPI 4 build, thanks.

@RealDekkia
Copy link

RealDekkia commented Jan 23, 2020

I tried to build it on a Raspberry Pi 4 and it crashed during building:

   Compiling nftnl v0.2.1
error[E0308]: mismatched types
  --> /home/pi/.cargo/registry/src/github.aaakk.us.kg-1ecc6299db9ec823/nftnl-0.2.1/src/batch.rs:87:41
   |
87 |         unsafe { sys::nftnl_batch_begin(self.current() as *mut i8, self.seq) };
   |                                         ^^^^^^^^^^^^^^^^^^^^^^^^^ expected u8, found i8
   |
   = note: expected type `*mut u8`
              found type `*mut i8`

error[E0308]: mismatched types
  --> /home/pi/.cargo/registry/src/github.aaakk.us.kg-1ecc6299db9ec823/nftnl-0.2.1/src/batch.rs:92:39
   |
92 |         unsafe { sys::nftnl_batch_end(self.current() as *mut i8, self.seq) };
   |                                       ^^^^^^^^^^^^^^^^^^^^^^^^^ expected u8, found i8
   |
   = note: expected type `*mut u8`
              found type `*mut i8`

error[E0308]: mismatched types
  --> /home/pi/.cargo/registry/src/github.aaakk.us.kg-1ecc6299db9ec823/nftnl-0.2.1/src/table.rs:54:13
   |
54 |             buf as *mut i8,
   |             ^^^^^^^^^^^^^^ expected u8, found i8
   |
   = note: expected type `*mut u8`
              found type `*mut i8`

error[E0308]: mismatched types
  --> /home/pi/.cargo/registry/src/github.aaakk.us.kg-1ecc6299db9ec823/nftnl-0.2.1/src/table.rs:76:13
   |
76 |             buffer.as_mut_ptr() as *mut i8,
   |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected u8, found i8
   |
   = note: expected type `*mut u8`
              found type `*mut i8`

error[E0308]: mismatched types
   --> /home/pi/.cargo/registry/src/github.aaakk.us.kg-1ecc6299db9ec823/nftnl-0.2.1/src/chain.rs:111:13
    |
111 |             buf as *mut i8,
    |             ^^^^^^^^^^^^^^ expected u8, found i8
    |
    = note: expected type `*mut u8`
               found type `*mut i8`

error[E0308]: mismatched types
  --> /home/pi/.cargo/registry/src/github.aaakk.us.kg-1ecc6299db9ec823/nftnl-0.2.1/src/rule.rs:74:13
   |
74 |             buf as *mut i8,
   |             ^^^^^^^^^^^^^^ expected u8, found i8
   |
   = note: expected type `*mut u8`
              found type `*mut i8`

error[E0308]: mismatched types
   --> /home/pi/.cargo/registry/src/github.aaakk.us.kg-1ecc6299db9ec823/nftnl-0.2.1/src/set.rs:117:13
    |
117 |             buf as *mut i8,
    |             ^^^^^^^^^^^^^^ expected u8, found i8
    |
    = note: expected type `*mut u8`
               found type `*mut i8`

error[E0308]: mismatched types
   --> /home/pi/.cargo/registry/src/github.aaakk.us.kg-1ecc6299db9ec823/nftnl-0.2.1/src/set.rs:191:13
    |
191 |             buf as *mut i8,
    |             ^^^^^^^^^^^^^^ expected u8, found i8
    |
    = note: expected type `*mut u8`
               found type `*mut i8`

error: aborting due to 8 previous errors

For more information about this error, try `rustc --explain E0308`.
error: could not compile `nftnl`.
warning: build failed, waiting for other jobs to finish...
error: build failed
~/mullvadvpn-app ~/mullvadvpn-app
Restoring version metadata files...
~/mullvadvpn-app

I agree with manderss99: a binary-release for the RPI would be great!

@Librebowski
Copy link

I too would love to see an official Raspberry Pi build

@faern
Copy link
Member

faern commented Apr 6, 2020

All errors posted are from building nftnl-rs, our own Linux firewall crate. Apparently it does not support arm. This is unfortunate and should probably be fixed.

@kevinstadler
Copy link

kevinstadler commented Apr 10, 2020

+1 on this, I just ran into the very same compilation error trying to build the app on an Orange Pi Zero (basically a Chinese clone of the Raspberry Pi, armv7 architecture).

@faern could you give any more details on how you previously managed to compile mullvad-cli on a Pi?

@faern
Copy link
Member

faern commented Apr 14, 2020

I suspect last time we successfully built it for ARM was before this functionality was added to nftnl-rs.

@alfredoivan
Copy link

I suspect last time we successfully built it for ARM was before this functionality was added to nftnl-rs.

do you know which version is the latest you think it would compile successfully? as-in, before addition of nftnl-rs functionality

@faern
Copy link
Member

faern commented Apr 16, 2020

I have no idea. I have never built nftnl-rs on ARM myself. Compare the errors above with the git history maybe? But it does not matter much. This app needs the latest version now. So reverting is in no way possible. What needs to be done is to fix the casting that fails to use type aliases that are properly adapted for all platforms.

@dlon
Copy link
Member

dlon commented Apr 21, 2020

Unless there are other issues as well, you might use version 0.3 of the nftnl crate, which builds on arm. I.e., update the Cargo.toml files to use this version.

@faern
Copy link
Member

faern commented Apr 23, 2020

We upgraded our nftnl dependency to version 0.3 in #1673. Try building the master branch of this repository on ARM now and see if it can proceed further.

@manderss99
Copy link

image

got much further this time, on a raspberry pi 4 on raspbian
any ideas?

@faern
Copy link
Member

faern commented May 6, 2020

Yeah so the app depends on a number of external things not part of the Rust build chain. For example WireGuard. You will have to check wireguard/build-wireguard-go.sh and see if you can adjust it. Currently if it runs on Linux it is hardcoded to build x86_64-unknown-linux-gnu.

There are probably many more places like this you will run into. The app is kind of built for 64 bit x86 at the moment :/

@athyla
Copy link

athyla commented Jun 21, 2020

I have managed to build and use mullvad-app on Manjaro Linux on a RPi4 (aarch64) once, if I remember correctly, it was 2020.4-1. I have used the existing Arch Linux AUR packages, I have only updated the PKBUILD file, adding 'aarch64' to the architecture list. It did not manage to generate .deb file, but everything else was fine, I have manually copied the binaries to the system and successfully ran the app.
However, this happened only one time. :|
The latest version, even the beta git release fails with the 'talpid-core' compilation error, as mentioned previously.
It would be nice to figure out how to build every component to the native architecture, perhaps it's just a matter of correctly setting the architecture in the build scripts.
Unfortunately, I don't have enough experience to do this, but I will try to look into it.

Note:
Later I have noticed that the TARGET architecture for Linux is set to x86_64-unknown-linux-gnu in mullvadvpn-app/env.sh. On Manjaro ARM RPi4 it should be aarch64-unknown-linux-gnu.
Anyway, I hope in time there will be a aarch64 build for this app.

@Askannz
Copy link

Askannz commented Jul 5, 2020

The following is a bit off-topic, but it wasn't obvious for me and may help others.

You can actually to connect to Mullvad without using the official app or command-line interface at all. You can configure a Wireguard or OpenVPN client to connect directly to their servers. See instructions here: https://mullvad.net/en/help/tag/other-vpn-software/

I just tested on a Pinebook Pro (ARM architecture), and adding the provided Wireguard configuration to NetworkManager works perfectly.

Of course having the official app work on ARM would be nice, but it's not required to be able to use the VPN.

@athyla
Copy link

athyla commented Jul 6, 2020 via email

@rcunn87
Copy link

rcunn87 commented Oct 15, 2020

With Apple moving to ARM processors I'm guessing this will get done soonish.

@faern faern added the feature request For issues asking for new features label Feb 26, 2021
@natis1
Copy link

natis1 commented Jun 17, 2021

I'm able to get past the wg stuff by forcing it to build for aarch64 in env.sh. However I cannot get past:

Error: Command failed: bash ./scripts/build-proto.sh
./scripts/build-proto.sh: line 37: mullvadvpn-app/gui/node_modules/.bin/grpc_tools_node_protoc: No such file or directory

Apparently grpc requires x86_64. Would it be possible to compile mullvad without grpc while they work on support? See: grpc/grpc#24002

@pinkisemils
Copy link
Collaborator

No, but what we're doing is we're building the GRPC code on an x86-64 host and then copying the generated code over to an arm64 host for a build.

@faern faern changed the title [Feature request] ARM support [Feature request] Linux ARM support Jun 29, 2021
@rcunn87
Copy link

rcunn87 commented Jul 5, 2021

Looks like grpc supports arm now

@StellarOrbit
Copy link

Is there any progress on this? I use mullvad and would love to be able to use mullvad on my arm laptop

@raksooo
Copy link
Member

raksooo commented Jul 22, 2021

@rcunn87 We're using grpc-tools and as far as I can tell they still don't distribute ARM binaries and don't seem interested to do so either.

@CalfCrusher
Copy link

Please support arm arch

@natis1
Copy link

natis1 commented Aug 7, 2021

It claims to be prebuilt for everything but their ruby module https://grpc.io/blog/grpc-on-arm64/

@StellarOrbit
Copy link

It claims to be prebuilt for everything but their ruby module https://grpc.io/blog/grpc-on-arm64/

Hopefully they can get that ironed out soonish. I am down to help, but I am no programmer

@raksooo
Copy link
Member

raksooo commented Aug 16, 2021

@natis1 To clarify what I meant above. gRPC works on ARM64. What @pinkisemils talked about above is grpc-tools, which is used to generate the TypeScript code from our proto-definitions, and this doesn't run on ARM. This can be worked around as described above. More detailed instructions are provided in the our readme https://github.com/mullvad/mullvadvpn-app#apple-arm64-aka-apple-silicon.

More info about why grpc-tools don't support ARM64 can be found here: grpc/grpc-node#1405

@fooness
Copy link

fooness commented Dec 18, 2021

Are there any news regarding ARM support?

@faern
Copy link
Member

faern commented Dec 20, 2021

Sadly no. We have not taken the time to build the dependencies we need there yet.

@JBMedeiros
Copy link

Please do it. Thanks

@Kabouik
Copy link

Kabouik commented Mar 9, 2022

As a new Mullvab user, I'd love to see ARM builds too (at least for the CLI tool, missing the GUI would not be a big deal for me). ARM devices are now very widespread and most of the devices I would use Mullvab on are ARM. OpenVPN can work until then, but the flexibility of the CLI or GUI clients would be a lot more convenient.

@ghost
Copy link

ghost commented May 13, 2022

The interface looks like it would work well with the PinePhone already, just need an arm64 build

@xrishox
Copy link

xrishox commented Aug 2, 2022

would love to see arm support added. now there is a serious number of arm devices out there that people are actually using like the pi and all of the new mac devices it would seem like having the gui tool available would be awesome. fortunately you can still grab openvpn config files, but that certainly isnt optimal and lacks a number of features.

@fooness
Copy link

fooness commented Aug 2, 2022

[…] it would seem like having the gui tool available would be awesome.

Well, even the mullvad CLI client, which I think this thread initially is about, would be awesome; and then from there it’s probably—in comparison—just a minor step to get the GUI client working, too.

@Mathspy
Copy link

Mathspy commented Aug 2, 2022

[…] it would seem like having the gui tool available would be awesome.

Well, even the mullvad CLI client, which I think this thread initially is about, would be awesome; and then from there it’s probably—in comparison—just a minor step to get the GUI client working, too.

I had the mullvad CLI running on my Pi a while ago, I just compiled it without wireguard because I didn't really need it at the time and wireguard-go is one of the relatively less portable parts of the current CLI. Worked quite well overall, there were some complexities like the fact mullvad was using a very old version of shadowsocks-rust that had a yanked dependency, but once I had gotten past those it was honestly perfect

Was curious how things are now and just found #3474 which solves the shadowsocks issue I mentioned above. That was one of my annoyances with getting mullvad to work on my Pi, that's nifty

@slendermon
Copy link

slendermon commented Aug 10, 2022

i made a mullvad app gui for wireguard if anyone wants to see: https://github.com/slendermon/ehh
hope this helps you
also i got it working with pinephone
note: this is not the same thing as mullvadvpn app

@raksooo
Copy link
Member

raksooo commented Oct 19, 2022

We now include aarch64 in our releases which can be found on the releases page. I'll close this issue since we have no plans on supporting 32-bit ARM.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature request For issues asking for new features
Projects
None yet
Development

No branches or pull requests