From e04b78f0e07b864df65d9fc6f66047c5c3eb7242 Mon Sep 17 00:00:00 2001 From: oopsbagel Date: Sun, 20 Apr 2025 21:53:17 -0700 Subject: [PATCH 1/7] ci: use rust-lld for all release targets Removes dependency on gcc-based cross-compilation toolchain. --- .cargo/config.toml | 22 +++++++++++++++++++++- .github/workflows/build-release.yml | 22 ++++++---------------- README.md | 24 ++++++++++++++++++------ lib/src/diag_device.rs | 16 ++++++++++------ make.sh | 4 ++-- 5 files changed, 57 insertions(+), 31 deletions(-) diff --git a/.cargo/config.toml b/.cargo/config.toml index 318eb3d..881bc70 100644 --- a/.cargo/config.toml +++ b/.cargo/config.toml @@ -1,5 +1,25 @@ +[target.aarch64-apple-darwin] +linker = "rust-lld" +rustflags = ["-C", "target-feature=+crt-static"] + +[target.aarch64-unknown-linux-musl] +linker = "rust-lld" +rustflags = ["-C", "target-feature=+crt-static"] + [target.armv7-unknown-linux-gnueabihf] -linker = "arm-linux-gnueabihf-gcc" +linker = "armv7l-unknown-linux-gnueabihf-gcc" +rustflags = ["-C", "target-feature=+crt-static"] + +[target.armv7-unknown-linux-musleabihf] +linker = "rust-lld" +rustflags = ["-C", "target-feature=+crt-static"] + +[target.x86_64-apple-darwin] +linker = "rust-lld" +rustflags = ["-C", "target-feature=+crt-static"] + +[target.x86_64-unknown-linux-musl] +linker = "rust-lld" rustflags = ["-C", "target-feature=+crt-static"] # optimizations to reduce the binary size diff --git a/.github/workflows/build-release.yml b/.github/workflows/build-release.yml index ac2b568..70be89c 100644 --- a/.github/workflows/build-release.yml +++ b/.github/workflows/build-release.yml @@ -56,18 +56,13 @@ jobs: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@stable with: - targets: armv7-unknown-linux-gnueabihf - - name: Install cross-compilation dependencies - uses: awalsh128/cache-apt-pkgs-action@latest - with: - packages: build-essential libc6-armhf-cross libc6-dev-armhf-cross gcc-arm-linux-gnueabihf - version: 1.0 + targets: armv7-unknown-linux-musleabihf - name: Build rootshell (arm32) - run: cargo build --bin rootshell --target armv7-unknown-linux-gnueabihf --release + run: cargo build --bin rootshell --target armv7-unknown-linux-musleabihf --release - uses: actions/upload-artifact@v4 with: name: rootshell - path: target/armv7-unknown-linux-gnueabihf/release/rootshell + path: target/armv7-unknown-linux-musleabihf/release/rootshell if-no-files-found: error build_rayhunter: strategy: @@ -81,18 +76,13 @@ jobs: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@stable with: - targets: armv7-unknown-linux-gnueabihf - - name: Install cross-compilation dependencies - uses: awalsh128/cache-apt-pkgs-action@latest - with: - packages: build-essential libc6-armhf-cross libc6-dev-armhf-cross gcc-arm-linux-gnueabihf - version: 1.0 + targets: armv7-unknown-linux-musleabihf - name: Build rayhunter-daemon (arm32) - run: cargo build --bin rayhunter-daemon --target armv7-unknown-linux-gnueabihf --release --no-default-features --features ${{ matrix.device.name }} + run: cargo build --bin rayhunter-daemon --target armv7-unknown-linux-musleabihf --release --no-default-features --features ${{ matrix.device.name }} - uses: actions/upload-artifact@v4 with: name: rayhunter-daemon-${{ matrix.device.name }} - path: target/armv7-unknown-linux-gnueabihf/release/rayhunter-daemon + path: target/armv7-unknown-linux-musleabihf/release/rayhunter-daemon if-no-files-found: error build_release_zip: needs: diff --git a/README.md b/README.md index 021262c..93b40f0 100644 --- a/README.md +++ b/README.md @@ -110,15 +110,27 @@ Follow these instructions if you need to build Rayhunter from source rather than * [linux](https://askubuntu.com/questions/652936/adding-android-sdk-platform-tools-to-path-downloaded-from-umake) * [macOS](https://www.repeato.app/setting-up-adb-on-macos-a-step-by-step-guide/) * [Windows](https://medium.com/@yadav-ajay/a-step-by-step-guide-to-setting-up-adb-path-on-windows-0b833faebf18) +* Install `curl` on your computer to run the install scripts. It is not needed to build binaries. -### If you're on x86 linux +### Install Rust targets -Install Rust the usual way and then install cross compiling dependences: +[Install Rust the usual way](https://www.rust-lang.org/tools/install). Then, -```bash -sudo apt install curl build-essential libc6-armhf-cross libc6-dev-armhf-cross gcc-arm-linux-gnueabihf -rustup target add x86_64-unknown-linux-gnu -rustup target add armv7-unknown-linux-gnueabihf +- install the cross-compilation target for the device rayhunter will run on: +```sh +rustup target add armv7-unknown-linux-musleabihf +``` + +- install the statically compiled target for your host machine to build the binary installer [`serial`](./serial). +```sh +# check which toolchain you have installed by default with +rustup show +# now install the correct variant for your host platform, one of: +rustup target add x86_64-unknown-linux-musl +rustup target add aarch64-unknown-linux-musl +rustup target add aarch64-apple-darwin +rustup target add x86_64-apple-darwin +rustup target add x86_64-pc-windows-gnu ``` Now you can root your device and install Rayhunter by running `./tools/install-dev.sh` diff --git a/lib/src/diag_device.rs b/lib/src/diag_device.rs index 7dd68f0..6ccded6 100644 --- a/lib/src/diag_device.rs +++ b/lib/src/diag_device.rs @@ -59,18 +59,22 @@ pub const LOG_CODES_FOR_RAW_PACKET_LOGGING: [u32; 11] = [ const BUFFER_LEN: usize = 1024 * 1024 * 10; const MEMORY_DEVICE_MODE: u32 = 2; -#[cfg(target_arch = "arm")] +#[cfg(target_env = "musl")] +const DIAG_IOCTL_REMOTE_DEV: i32 = 32; +#[cfg(all(not(target_env = "musl"), target_arch = "arm"))] const DIAG_IOCTL_REMOTE_DEV: u32 = 32; -#[cfg(target_arch = "x86_64")] +#[cfg(all(not(target_env = "musl"), target_arch = "x86_64"))] const DIAG_IOCTL_REMOTE_DEV: u64 = 32; -#[cfg(target_arch = "aarch64")] +#[cfg(all(not(target_env = "musl"), target_arch = "aarch64"))] const DIAG_IOCTL_REMOTE_DEV: u64 = 32; -#[cfg(target_arch = "arm")] +#[cfg(target_env = "musl")] +const DIAG_IOCTL_SWITCH_LOGGING: i32 = 7; +#[cfg(all(not(target_env = "musl"), target_arch = "arm"))] const DIAG_IOCTL_SWITCH_LOGGING: u32 = 7; -#[cfg(target_arch = "x86_64")] +#[cfg(all(not(target_env = "musl"), target_arch = "x86_64"))] const DIAG_IOCTL_SWITCH_LOGGING: u64 = 7; -#[cfg(target_arch = "aarch64")] +#[cfg(all(not(target_env = "musl"), target_arch = "aarch64"))] const DIAG_IOCTL_SWITCH_LOGGING: u64 = 7; pub struct DiagDevice { diff --git a/make.sh b/make.sh index a63f1a6..3e765d6 100755 --- a/make.sh +++ b/make.sh @@ -1,6 +1,6 @@ #!/bin/sh -cargo build --release --target="armv7-unknown-linux-gnueabihf" #--features debug +cargo build --release --target="armv7-unknown-linux-musleabihf" #--features debug adb shell '/bin/rootshell -c "/etc/init.d/rayhunter_daemon stop"' -adb push target/armv7-unknown-linux-gnueabihf/release/rayhunter-daemon /data/rayhunter/rayhunter-daemon +adb push target/armv7-unknown-linux-musleabihf/release/rayhunter-daemon /data/rayhunter/rayhunter-daemon echo "rebooting the device..." adb shell '/bin/rootshell -c "reboot"' From f2028a704f88bd5746f568816d49e8f3d3584a5d Mon Sep 17 00:00:00 2001 From: oopsbagel Date: Mon, 21 Apr 2025 13:41:31 -0700 Subject: [PATCH 2/7] tools: target armv7 musleabihf --- tools/devenv.dockerfile | 4 +--- tools/run-docker-devenv | 4 ++-- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/tools/devenv.dockerfile b/tools/devenv.dockerfile index e5dfaa3..78c430a 100644 --- a/tools/devenv.dockerfile +++ b/tools/devenv.dockerfile @@ -1,5 +1,3 @@ FROM rust:1.86-bullseye -RUN apt-get update -RUN apt-get install -y build-essential libc6-armhf-cross libc6-dev-armhf-cross gcc-arm-linux-gnueabihf -RUN rustup target add armv7-unknown-linux-gnueabihf +RUN rustup target add armv7-unknown-linux-musleabihf diff --git a/tools/run-docker-devenv b/tools/run-docker-devenv index 954fd47..bfec3d9 100755 --- a/tools/run-docker-devenv +++ b/tools/run-docker-devenv @@ -9,9 +9,9 @@ # ./tools/run-docker-devenv # # Inside the shell: -# cargo build --bin rayhunter-daemon --target armv7-unknown-linux-gnueabihf --release +# cargo build --bin rayhunter-daemon --target armv7-unknown-linux-musleabihf --release # -# Your output binary is in ./target/armv7-unknown-linux-gnueabihf/release/rayhunter-daemon +# Your output binary is in ./target/armv7-unknown-linux-musleabihf/release/rayhunter-daemon docker build -t rayhunter-devenv -f tools/devenv.dockerfile . exec docker run --user $UID:$GID -v ./:/workdir -w /workdir -it rayhunter-devenv "$@" From a8087c6840fdd1f8e15d828ce3d613f7e719ae1c Mon Sep 17 00:00:00 2001 From: oopsbagel Date: Mon, 21 Apr 2025 13:44:46 -0700 Subject: [PATCH 3/7] cargo/config: show apt pkgs for gnueabihf --- .cargo/config.toml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.cargo/config.toml b/.cargo/config.toml index 881bc70..09842cd 100644 --- a/.cargo/config.toml +++ b/.cargo/config.toml @@ -6,8 +6,9 @@ rustflags = ["-C", "target-feature=+crt-static"] linker = "rust-lld" rustflags = ["-C", "target-feature=+crt-static"] +# apt install build-essential libc6-armhf-cross libc6-dev-armhf-cross gcc-arm-linux-gnueabihf [target.armv7-unknown-linux-gnueabihf] -linker = "armv7l-unknown-linux-gnueabihf-gcc" +linker = "arm-linux-gnueabihf-gcc" rustflags = ["-C", "target-feature=+crt-static"] [target.armv7-unknown-linux-musleabihf] From 32b67df55da955eacfbebf4921d3a0dd9254383e Mon Sep 17 00:00:00 2001 From: Markus Unterwaditzer Date: Fri, 25 Apr 2025 16:46:49 +0200 Subject: [PATCH 4/7] Fix clippy lints and upgrade deku Old version of deku was throwing clippy lints in generated code --- Cargo.lock | 124 +++++++++++++++++++---------------------- lib/Cargo.toml | 2 +- lib/src/diag.rs | 8 +-- lib/src/diag_device.rs | 4 +- 4 files changed, 64 insertions(+), 74 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index b52f96c..9d67f4f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -365,7 +365,7 @@ dependencies = [ "anstream", "anstyle", "clap_lex", - "strsim 0.11.0", + "strsim", ] [[package]] @@ -450,9 +450,9 @@ dependencies = [ [[package]] name = "darling" -version = "0.14.4" +version = "0.20.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b750cb3417fd1b327431a470f388520309479ab0bf5e323505daf0290cd3850" +checksum = "fc7f46116c46ff9ab3eb1597a45688b6715c6e628b5c133e288e709a29bcb4ee" dependencies = [ "darling_core", "darling_macro", @@ -460,51 +460,53 @@ dependencies = [ [[package]] name = "darling_core" -version = "0.14.4" +version = "0.20.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "109c1ca6e6b7f82cc233a97004ea8ed7ca123a9af07a8230878fcfda9b158bf0" +checksum = "0d00b9596d185e565c2207a0b01f8bd1a135483d02d9b7b0a54b11da8d53412e" dependencies = [ "fnv", "ident_case", "proc-macro2", "quote", - "strsim 0.10.0", - "syn 1.0.109", + "strsim", + "syn 2.0.50", ] [[package]] name = "darling_macro" -version = "0.14.4" +version = "0.20.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4aab4dbc9f7611d8b55048a3a16d2d010c2c8334e46304b40ac1cc14bf3b48e" +checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" dependencies = [ "darling_core", "quote", - "syn 1.0.109", + "syn 2.0.50", ] [[package]] name = "deku" -version = "0.16.0" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "819b87cc7a05b3abe3fc38e59b3980a5fd3162f25a247116441a9171d3e84481" +checksum = "a9711031e209dc1306d66985363b4397d4c7b911597580340b93c9729b55f6eb" dependencies = [ "bitvec", "deku_derive", "log", + "no_std_io2", + "rustversion", ] [[package]] name = "deku_derive" -version = "0.16.0" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e2ca12572239215a352a74ad7c776d7e8a914f8a23511c6cbedddd887e5009e" +checksum = "58cb0719583cbe4e81fb40434ace2f0d22ccc3e39a74bb3796c22b451b4f139d" dependencies = [ "darling", "proc-macro-crate", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.50", ] [[package]] @@ -717,6 +719,12 @@ dependencies = [ "allocator-api2", ] +[[package]] +name = "hashbrown" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" + [[package]] name = "heck" version = "0.4.1" @@ -882,12 +890,12 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.2.3" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "233cf39063f058ea2caae4091bf4a3ef70a653afbc026f5c4a4135d114e3c177" +checksum = "cea70ddb795996207ad57735b50c5982d8844f38ba9ee5f1aedcfb708a2aa11e" dependencies = [ "equivalent", - "hashbrown", + "hashbrown 0.15.2", ] [[package]] @@ -956,9 +964,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.20" +version = "0.4.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" +checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" [[package]] name = "mach2" @@ -1039,6 +1047,15 @@ dependencies = [ "libc", ] +[[package]] +name = "no_std_io2" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a3564ce7035b1e4778d8cb6cacebb5d766b5e8fe5a75b9e441e33fb61a872c6" +dependencies = [ + "memchr", +] + [[package]] name = "num-conv" version = "0.1.0" @@ -1205,19 +1222,18 @@ checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" [[package]] name = "proc-macro-crate" -version = "1.3.1" +version = "3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" +checksum = "edce586971a4dfaa28950c6f18ed55e0406c1ab88bbce2c6f6293a7aaba73d35" dependencies = [ - "once_cell", - "toml_edit 0.19.15", + "toml_edit", ] [[package]] name = "proc-macro2" -version = "1.0.78" +version = "1.0.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae" +checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778" dependencies = [ "unicode-ident", ] @@ -1352,9 +1368,9 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.14" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" +checksum = "eded382c5f5f786b989652c49544c4877d9f015cc22e145a5ea8ea66c2921cd2" [[package]] name = "ryu" @@ -1411,9 +1427,9 @@ dependencies = [ [[package]] name = "serde_spanned" -version = "0.6.5" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb3622f419d1296904700073ea6cc23ad690adbd66f13ea683df73298736f0c1" +checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1" dependencies = [ "serde", ] @@ -1493,15 +1509,9 @@ dependencies = [ [[package]] name = "strsim" -version = "0.10.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" - -[[package]] -name = "strsim" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ee073c9e4cd00e28217186dbe12796d692868f432bf2e97ee73bed0c56dfa01" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" [[package]] name = "syn" @@ -1684,7 +1694,7 @@ dependencies = [ "futures-core", "futures-sink", "futures-util", - "hashbrown", + "hashbrown 0.14.3", "pin-project-lite", "tokio", ] @@ -1698,40 +1708,29 @@ dependencies = [ "serde", "serde_spanned", "toml_datetime", - "toml_edit 0.22.6", + "toml_edit", ] [[package]] name = "toml_datetime" -version = "0.6.5" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1" +checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" dependencies = [ "serde", ] [[package]] name = "toml_edit" -version = "0.19.15" +version = "0.22.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" -dependencies = [ - "indexmap", - "toml_datetime", - "winnow 0.5.40", -] - -[[package]] -name = "toml_edit" -version = "0.22.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c1b5fd4128cc8d3e0cb74d4ed9a9cc7c7284becd4df68f5f940e1ad123606f6" +checksum = "17b4795ff5edd201c7cd6dca065ae59972ce77d1b80fa0a84d94950ece7d1474" dependencies = [ "indexmap", "serde", "serde_spanned", "toml_datetime", - "winnow 0.6.2", + "winnow", ] [[package]] @@ -2071,18 +2070,9 @@ checksum = "0770833d60a970638e989b3fa9fd2bb1aaadcf88963d1659fd7d9990196ed2d6" [[package]] name = "winnow" -version = "0.5.40" +version = "0.7.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" -dependencies = [ - "memchr", -] - -[[package]] -name = "winnow" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a4191c47f15cc3ec71fcb4913cb83d58def65dd3787610213c649283b5ce178" +checksum = "6cb8234a863ea0e8cd7284fcdd4f145233eb00fee02bbdd9861aec44e6477bc5" dependencies = [ "memchr", ] diff --git a/lib/Cargo.toml b/lib/Cargo.toml index ba6af3f..1bb19da 100644 --- a/lib/Cargo.toml +++ b/lib/Cargo.toml @@ -18,7 +18,7 @@ tplink = [] bytes = "1.5.0" chrono = "0.4.31" crc = "3.0.1" -deku = { version = "0.16.0", features = ["logging"] } +deku = { version = "0.18.0", features = ["logging"] } env_logger = "0.10.1" libc = "0.2.150" log = "0.4.20" diff --git a/lib/src/diag.rs b/lib/src/diag.rs index baa765e..c50ac54 100644 --- a/lib/src/diag.rs +++ b/lib/src/diag.rs @@ -25,14 +25,14 @@ pub struct RequestContainer { } #[derive(Debug, Clone, PartialEq, DekuWrite)] -#[deku(type = "u32")] +#[deku(id_type = "u32")] pub enum Request { #[deku(id = "115")] LogConfig(LogConfigRequest), } #[derive(Debug, Clone, PartialEq, DekuWrite)] -#[deku(type = "u32", endian = "little")] +#[deku(id_type = "u32", endian = "little")] pub enum LogConfigRequest { #[deku(id = "1")] RetrieveIdRanges, @@ -46,7 +46,7 @@ pub enum LogConfigRequest { } #[derive(Debug, Clone, PartialEq, DekuRead, DekuWrite)] -#[deku(type = "u32", endian = "little")] +#[deku(id_type = "u32", endian = "little")] pub enum DataType { #[deku(id = "32")] UserSpace, @@ -121,7 +121,7 @@ pub struct HdlcEncapsulatedMessage { } #[derive(Debug, Clone, PartialEq, DekuRead, DekuWrite)] -#[deku(type = "u8")] +#[deku(id_type = "u8")] pub enum Message { #[deku(id = "16")] Log { diff --git a/lib/src/diag_device.rs b/lib/src/diag_device.rs index 6ccded6..8d4557a 100644 --- a/lib/src/diag_device.rs +++ b/lib/src/diag_device.rs @@ -130,8 +130,8 @@ impl DiagDevice { ); match MessagesContainer::from_bytes((&self.read_buf[0..bytes_read], 0)) { - Ok((_, container)) => return Ok(container), - Err(err) => return Err(DiagDeviceError::ParseMessagesContainerError(err)), + Ok((_, container)) => Ok(container), + Err(err) => Err(DiagDeviceError::ParseMessagesContainerError(err)), } } From 7e1b410f89b478836f3f6861da1dc8d0e9805688 Mon Sep 17 00:00:00 2001 From: Markus Unterwaditzer Date: Fri, 25 Apr 2025 16:47:50 +0200 Subject: [PATCH 5/7] add clippy to CI --- .github/workflows/check-and-test.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/check-and-test.yml b/.github/workflows/check-and-test.yml index 8779b45..600508f 100644 --- a/.github/workflows/check-and-test.yml +++ b/.github/workflows/check-and-test.yml @@ -24,6 +24,8 @@ jobs: run: cargo check --verbose --no-default-features --features=${{ matrix.device.name }} - name: Run tests run: cargo test --verbose --no-default-features --features=${{ matrix.device.name }} + - name: Run clippy + run: cargo clippy --verbose --no-default-features --features=${{ matrix.device.name }} windows_serial_check_and_test: runs-on: windows-latest @@ -38,4 +40,4 @@ jobs: shell: bash run: | cd serial - cargo test --verbose --no-default-features --features=${{ matrix.device.name }} \ No newline at end of file + cargo test --verbose --no-default-features --features=${{ matrix.device.name }} From 5ae6f0c5cea1cce5736112cacaf6f6f522491979 Mon Sep 17 00:00:00 2001 From: Will Greenberg Date: Fri, 25 Apr 2025 12:05:31 -0700 Subject: [PATCH 6/7] unzip -> decompress --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 93b40f0..f14475f 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,7 @@ or on [eBay](https://www.ebay.com/sch/i.html?_nkw=orbic+rc400l). ## Setup (Mac, Linux) 1. Download the latest `release.tar` from the [Rayhunter releases page](https://github.com/EFForg/rayhunter/releases) -2. Unzip the `release.tar`. Open the terminal and navigate to the folder +2. Decompress the `release.tar` archive. Open the terminal and navigate to the folder ```bash mkdir ~/Downloads/release From f97bc56f2c794d0a345d9ab29bec076371c94c24 Mon Sep 17 00:00:00 2001 From: Markus Unterwaditzer Date: Sat, 26 Apr 2025 01:06:03 +0200 Subject: [PATCH 7/7] Add disclaimer about country support More users are discovering this repo and buy Orbic devices for countries where the device doesn't work. --- README.md | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index f14475f..72721be 100644 --- a/README.md +++ b/README.md @@ -10,10 +10,12 @@ Rayhunter is an IMSI Catcher Catcher for the Orbic mobile hotspot. ## The Hardware -Rayhunter has been built and tested for the Orbic RC400L mobile hotspot. It may work on other Orbics and other -Linux/Qualcom devices, but this is the only one we have tested on. -You can buy the orbic [using bezos bucks](https://www.amazon.com/Orbic-Verizon-Hotspot-Connect-Enabled/dp/B08N3CHC4Y), -or on [eBay](https://www.ebay.com/sch/i.html?_nkw=orbic+rc400l). +Rayhunter has been built and tested for the Orbic RC400L mobile hotspot. It may +work on other Orbics and other Linux/Qualcom devices, but this is the only one +we have tested on. You can buy the orbic [using bezos +bucks](https://www.amazon.com/Orbic-Verizon-Hotspot-Connect-Enabled/dp/B08N3CHC4Y), +or on [eBay](https://www.ebay.com/sch/i.html?_nkw=orbic+rc400l). Please ensure +that the [Orbic works in your country](#orbic) before buying. ## Setup (Mac, Linux) @@ -84,18 +86,20 @@ If you've received a Rayhunter warning and would like to help us with our resear Please note that this file may contain sensitive information such as your IMSI and the unique IDs of cell towers you were near which could be used to ascertain your location at the time. -### Does Rayhunter work outside of the US? + -**Probably**. Some Rayhunter users have reported successfully using it in other countries with unlocked devices and SIM cards from local telcos. We can't guarantee whether or not it will work for you though. +### Does Rayhunter work outside of the US, or on any other devices besides the Orbic RC400L? + +**Maybe**. Rayhunter currently only supports the Orbic RC400L, which itself only works in the US and some other countries. Please check whether the Orbic RC400L supports the right frequency bands for your purpose before buying. + +We have not tested Rayhunter on any other hardware but we would love to expand the supported platforms. We will consider giving official support to any hardware platform that can be bought for around $20-30USD. The Rayhunter daemon should theoretically work on any Linux/Android device that has a qualcomm chip with a `/dev/diag` interface and root access, though our installer script has only been tested with an Orbic. If you get it working on another device, please let us know! + +There is work underway to support [TP-Link M7350](https://github.com/EFForg/rayhunter/issues/186) to support more frequency bands and therefore support most of Europe. ### Should I get a locked or unlocked orbic device? What is the difference? If you want to use a non-Verizon SIM card you will probably need an unlocked device. But it's not clear how locked the locked devices are nor how to unlock them, we welcome any experimentation and information regarding the use of unlocked devices. -### Does Rayhunter work on any other devices besides the Orbic RC400L? - -**Maybe**. We have not tested Rayhunter on any other hardware but we would love to expand the supported platforms. We will consider giving official support to any hardware platform that can be bought for around $20-30USD. The Rayhunter daemon should theoretically work on any Linux/Android device that has a qualcomm chip with a `/dev/diag` interface and root access, though our installer script has only been tested with an Orbic. If you get it working on another device, please let us know! - ### How do I delete capture files from the Rayhunter device? You can get a shell on the device by inputting `adb shell` to a terminal with the device connected, you can check if it is detected with `adb devices`.