Skip to content

whulxc/MultiSignal-Collector

Repository files navigation

MultiSignal-Collector

MultiSignal-Collector is a slim raw data collection toolkit extracted from the MultiSignal Android research workspace. It keeps only the Android collection app, PC-side WiFi/ADB control, live raw receiver, raw session backfill, and build/install helpers.

This repository does not include acoustic, fingerprint, indoor positioning, PDR, model training, inference, report generation, historical experiment scripts, or generated datasets.

What It Collects

  • Android IMU event streams
  • WiFi scan and RTT records when available
  • BLE scan records
  • GNSS raw measurements and clock records when available
  • Raw float PCM audio saved as WAV
  • Session metadata, transport batch continuity, and task preset metadata

The default live upload port is 8888. The default raw session backfill port is 8890.

Privacy Notice

Raw sessions can contain sensitive environment and personal data, including audio, WiFi SSID/BSSID values, BLE MAC addresses and device names, GNSS location/time records, phone source IPs, and Android device model metadata. Do not publish collected session folders without review and redaction.

The public collector code does not include generated datasets, analysis outputs, model checkpoints, private path configs, build fingerprints, ADB serials, tokens, or keys.

Repository Layout

  • app/: Android collection app
  • scripts/receiver.py: one-shot PC receiver
  • scripts/receiver_watch.py: long-running phone-manual WiFi upload receiver
  • scripts/harvest_control.py: PC-controlled ADB/WiFi collection entry
  • scripts/watch_wifi_upload.sh: phone-manual WiFi upload launcher
  • scripts/watch_wifi_upload_fresh.sh: launcher that clears stale listeners
  • scripts/install_debug_apk.sh: installs the debug APK with adb
  • python/collect/collect_session.py: compact collection facade
  • python/core/raw_backfill.py: raw session backfill server
  • docs/data_format.md: raw output format notes

Requirements

  • Android Studio or Android Gradle Plugin compatible SDK installation
  • JDK suitable for the Android Gradle Plugin version in this project
  • Python 3.10+
  • Python package protobuf
  • adb on PATH, or ULTRAHARVESTER_ADB pointing to adb

Set the Android SDK in one of these ways:

export ANDROID_SDK_ROOT=/path/to/android/sdk
export ANDROID_HOME="$ANDROID_SDK_ROOT"
export JAVA_HOME=/path/to/jdk

You can also create an untracked local.properties:

sdk.dir=/path/to/android/sdk

Build And Install

./gradlew :app:assembleDebug
bash scripts/install_debug_apk.sh

To install a specific APK:

bash scripts/install_debug_apk.sh app/build/outputs/apk/debug/app-debug.apk

Phone-Manual WiFi Upload

Start a fresh PC listener:

bash scripts/watch_wifi_upload_fresh.sh \
  -o ./MultiSignal_Experiments \
  --host <PC_LAN_IPV4> \
  --max-sessions 1

On the Android app, use:

  • transport mode: wifi
  • WiFi link mode: upload
  • PC host: the same <PC_LAN_IPV4>
  • live port: 8888
  • raw backfill port: 8890

Start collection from the phone UI. The PC should create a session directory named like <prefix>_session_YYYYMMDD_HHMMSS when a prefix is available.

PC-Controlled Collection

ADB-controlled USB or WiFi collection:

python3 python/collect/collect_session.py \
  --transport wifi \
  --control-via wifi \
  --phone-ip <PHONE_LAN_IPV4> \
  --pc-host <PC_LAN_IPV4> \
  -d 3 \
  -o ./MultiSignal_Experiments \
  --label pointA

collect_session.py passes unknown options through to scripts/harvest_control.py, so sensor toggles such as --no-ble, --no-gnss, or --no-audio-play can be used there as well.

Task Presets

The Android app and PC scripts keep these collection presets as raw collection configuration and storage folders only:

  • acoustic_sensing
  • indoor_Multisignal
  • Acoustic_IMU_landmark

No post-processing is run automatically for any preset.

Raw Backfill

If live WiFi upload drops batches, keep the PC listener running. The phone can send the complete local raw session to the PC backfill listener on port 8890. The backfill server replaces the session raw_data/ tree atomically after the full manifest has arrived.

License

MIT. See LICENSE.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors