Repository files navigation

Android BuildLicense: GPL v3Latest Release

VIEWA — Live LSL Data Viewer for Android

VIEWA main screen showing live sensor streams

📋 See CHANGELOG.md for the full version history.


Citation

If you use VIEWA in your research, please cite the following publication:

Haupt T, Maanen P, Daeglau M et al. — Enhancing mobile brain and body imaging: Open-source solutions for real-world research applications. iScience, 2026; 29.

VIEWA is provided without any warranty, and without guarantee of fitness for a particular purpose. Use it at your own risk. See LICENSE for the full terms.


VIEWA turns your Android phone into a live oscilloscope for Lab Streaming Layer (LSL)[1] data.
Discover any LSL stream on your local network and watch all channels scroll in real time — no laptop, no cables, no extra software required.


Table of Contents

  1. Citation
  2. Why VIEWA?
  3. Features
  4. Getting Started
  5. Building from Source
  6. Scientific Use Cases & Publications
  7. Contributing
  8. Authors
  9. License
  10. Acknowledgements

Why VIEWA?

A signal monitor that fits in your pocket

Debugging a mobile EEG or sensor pipeline usually means squinting at a laptop screen across the room. VIEWA puts a live, scrolling view of every channel directly in your hand — useful during setup, during data collection, and during troubleshooting.

Works with any LSL stream

VIEWA auto-discovers every stream advertised on the local network, regardless of the device or software that sends it. If it speaks LSL, VIEWA can plot it.

Designed for use with RECORDA and SENDA

VIEWA pairs naturally with RECORDA (our Android LSL recorder) and SENDA (our Android sensor streamer), forming a fully self-contained mobile neuroscience toolkit — stream, record, and visualise, all from Android devices.


Features

  • 📈 Live multi-channel plotting — smooth, scrolling real-time charts for every incoming channel
  • 📡 Auto-discovery — finds all active LSL streams on the local network automatically
  • 🔧 Lightweight & self-contained — no extra services or companion software needed on the phone
  • 🌙 Dark & light theme — follows the system-wide display setting
  • 📱 Minimum Android 11 (API 30), tested on Android 14 (API 34)

Getting Started

Download the latest release APK and sideload it onto your Android smartphone or tablet (Android 11 or higher).

Tip: Make sure the phone running VIEWA and all streaming devices are on the same local network (same Wi-Fi access point). LSL uses multicast discovery, which does not work across separate network segments.


Building from Source

We recommend installing the pre-built release APK. If you need to build from source:

Prerequisites

ToolVersion
Android StudioArctic Fox or newer
Android SDK PlatformAPI 34

Steps

git clone https://github.com/NeuropsyOL/VIEWA.git
cd VIEWA

Open the project in Android Studio, let Gradle sync, then select your device/emulator and click Run ▶.

Or from the command line:

./gradlew installDebug

Scientific Use Cases & Publications

VIEWA was developed to support mobile neuroscience and biosignal research at the Neuropsychology Lab of Stefan Debener, University of Oldenburg, Germany.

The VIEWA / RECORDA / SENDA ecosystem builds on a broader line of mobile neuroscience research from our lab:

  • Blum S, Hölle D, Bleichner MG, Debener S. Pocketable Labs for Everyone: Synchronized Multi-Sensor Data Streaming and Recording on Smartphones with the Lab Streaming Layer. Sensors, 2021; 21(23):8135. https://doi.org/10.3390/s21238135

  • Debener S, Minow F, Emkes R, Gandras K, de Vos M. How about taking a low-cost, small, and wireless EEG for a walk? Psychophysiology, 2012; 49(11):1449–1453. https://doi.org/10.1111/j.1469-8986.2012.01471.x

Lab Streaming Layer

  • Kothe C, Shirazi SY, Stenner T, Medine D, Boulay C, Grivich MI, Artoni F, Mullen T, Delorme A, Makeig S. The Lab Streaming Layer for Synchronized Multimodal Recording. Imaging Neurosci (Camb). 2025;3:IMAG.a.136. https://doi.org/10.1162/IMAG.a.136

Contributing

Contributions are welcome! Please:

  1. Open an issue describing the bug or feature request.
  2. Fork the repository and create a branch from master.
  3. Submit a pull request referencing the issue.

See CONTRIBUTING.md for details on our workflow.


Authors

Developed by the Neuropsychology Lab of Stefan Debener, University of Oldenburg, Germany.

Active Developers

Previous Developers


License

GNU General Public License v3.0 — see LICENSE for details.


Acknowledgements

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

Android BuildLicense: GPL v3Latest Release

VIEWA — Live LSL Data Viewer for Android

VIEWA main screen showing live sensor streams

📋 See CHANGELOG.md for the full version history.


Citation

If you use VIEWA in your research, please cite the following publication:

Haupt T, Maanen P, Daeglau M et al. — Enhancing mobile brain and body imaging: Open-source solutions for real-world research applications. iScience, 2026; 29.

VIEWA is provided without any warranty, and without guarantee of fitness for a particular purpose. Use it at your own risk. See LICENSE for the full terms.


VIEWA turns your Android phone into a live oscilloscope for Lab Streaming Layer (LSL)[1] data.
Discover any LSL stream on your local network and watch all channels scroll in real time — no laptop, no cables, no extra software required.


Table of Contents

  1. Citation
  2. Why VIEWA?
  3. Features
  4. Getting Started
  5. Building from Source
  6. Scientific Use Cases & Publications
  7. Contributing
  8. Authors
  9. License
  10. Acknowledgements

Why VIEWA?

A signal monitor that fits in your pocket

Debugging a mobile EEG or sensor pipeline usually means squinting at a laptop screen across the room. VIEWA puts a live, scrolling view of every channel directly in your hand — useful during setup, during data collection, and during troubleshooting.

Works with any LSL stream

VIEWA auto-discovers every stream advertised on the local network, regardless of the device or software that sends it. If it speaks LSL, VIEWA can plot it.

Designed for use with RECORDA and SENDA

VIEWA pairs naturally with RECORDA (our Android LSL recorder) and SENDA (our Android sensor streamer), forming a fully self-contained mobile neuroscience toolkit — stream, record, and visualise, all from Android devices.


Features

  • 📈 Live multi-channel plotting — smooth, scrolling real-time charts for every incoming channel
  • 📡 Auto-discovery — finds all active LSL streams on the local network automatically
  • 🔧 Lightweight & self-contained — no extra services or companion software needed on the phone
  • 🌙 Dark & light theme — follows the system-wide display setting
  • 📱 Minimum Android 11 (API 30), tested on Android 14 (API 34)

Getting Started

Download the latest release APK and sideload it onto your Android smartphone or tablet (Android 11 or higher).

Tip: Make sure the phone running VIEWA and all streaming devices are on the same local network (same Wi-Fi access point). LSL uses multicast discovery, which does not work across separate network segments.


Building from Source

We recommend installing the pre-built release APK. If you need to build from source:

Prerequisites

ToolVersion
Android StudioArctic Fox or newer
Android SDK PlatformAPI 34

Steps

git clone https://github.com/NeuropsyOL/VIEWA.git
cd VIEWA

Open the project in Android Studio, let Gradle sync, then select your device/emulator and click Run ▶.

Or from the command line:

./gradlew installDebug

Scientific Use Cases & Publications

VIEWA was developed to support mobile neuroscience and biosignal research at the Neuropsychology Lab of Stefan Debener, University of Oldenburg, Germany.

The VIEWA / RECORDA / SENDA ecosystem builds on a broader line of mobile neuroscience research from our lab:

  • Blum S, Hölle D, Bleichner MG, Debener S. Pocketable Labs for Everyone: Synchronized Multi-Sensor Data Streaming and Recording on Smartphones with the Lab Streaming Layer. Sensors, 2021; 21(23):8135. https://doi.org/10.3390/s21238135

  • Debener S, Minow F, Emkes R, Gandras K, de Vos M. How about taking a low-cost, small, and wireless EEG for a walk? Psychophysiology, 2012; 49(11):1449–1453. https://doi.org/10.1111/j.1469-8986.2012.01471.x

Lab Streaming Layer

  • Kothe C, Shirazi SY, Stenner T, Medine D, Boulay C, Grivich MI, Artoni F, Mullen T, Delorme A, Makeig S. The Lab Streaming Layer for Synchronized Multimodal Recording. Imaging Neurosci (Camb). 2025;3:IMAG.a.136. https://doi.org/10.1162/IMAG.a.136

Contributing

Contributions are welcome! Please:

  1. Open an issue describing the bug or feature request.
  2. Fork the repository and create a branch from master.
  3. Submit a pull request referencing the issue.

See CONTRIBUTING.md for details on our workflow.


Authors

Developed by the Neuropsychology Lab of Stefan Debener, University of Oldenburg, Germany.

Active Developers

Previous Developers


License

GNU General Public License v3.0 — see LICENSE for details.


Acknowledgements

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Android BuildLicense: GPL v3Latest Release

VIEWA — Live LSL Data Viewer for Android

VIEWA main screen showing live sensor streams

📋 See CHANGELOG.md for the full version history.


Citation

If you use VIEWA in your research, please cite the following publication:

Haupt T, Maanen P, Daeglau M et al. — Enhancing mobile brain and body imaging: Open-source solutions for real-world research applications. iScience, 2026; 29.

VIEWA is provided without any warranty, and without guarantee of fitness for a particular purpose. Use it at your own risk. See LICENSE for the full terms.


VIEWA turns your Android phone into a live oscilloscope for Lab Streaming Layer (LSL)[1] data.
Discover any LSL stream on your local network and watch all channels scroll in real time — no laptop, no cables, no extra software required.


Table of Contents

  1. Citation
  2. Why VIEWA?
  3. Features
  4. Getting Started
  5. Building from Source
  6. Scientific Use Cases & Publications
  7. Contributing
  8. Authors
  9. License
  10. Acknowledgements

Why VIEWA?

A signal monitor that fits in your pocket

Debugging a mobile EEG or sensor pipeline usually means squinting at a laptop screen across the room. VIEWA puts a live, scrolling view of every channel directly in your hand — useful during setup, during data collection, and during troubleshooting.

Works with any LSL stream

VIEWA auto-discovers every stream advertised on the local network, regardless of the device or software that sends it. If it speaks LSL, VIEWA can plot it.

Designed for use with RECORDA and SENDA

VIEWA pairs naturally with RECORDA (our Android LSL recorder) and SENDA (our Android sensor streamer), forming a fully self-contained mobile neuroscience toolkit — stream, record, and visualise, all from Android devices.


Features

  • 📈 Live multi-channel plotting — smooth, scrolling real-time charts for every incoming channel
  • 📡 Auto-discovery — finds all active LSL streams on the local network automatically
  • 🔧 Lightweight & self-contained — no extra services or companion software needed on the phone
  • 🌙 Dark & light theme — follows the system-wide display setting
  • 📱 Minimum Android 11 (API 30), tested on Android 14 (API 34)

Getting Started

Download the latest release APK and sideload it onto your Android smartphone or tablet (Android 11 or higher).

Tip: Make sure the phone running VIEWA and all streaming devices are on the same local network (same Wi-Fi access point). LSL uses multicast discovery, which does not work across separate network segments.


Building from Source

We recommend installing the pre-built release APK. If you need to build from source:

Prerequisites

ToolVersion
Android StudioArctic Fox or newer
Android SDK PlatformAPI 34

Steps

git clone https://github.com/NeuropsyOL/VIEWA.git
cd VIEWA

Open the project in Android Studio, let Gradle sync, then select your device/emulator and click Run ▶.

Or from the command line:

./gradlew installDebug

Scientific Use Cases & Publications

VIEWA was developed to support mobile neuroscience and biosignal research at the Neuropsychology Lab of Stefan Debener, University of Oldenburg, Germany.

The VIEWA / RECORDA / SENDA ecosystem builds on a broader line of mobile neuroscience research from our lab:

  • Blum S, Hölle D, Bleichner MG, Debener S. Pocketable Labs for Everyone: Synchronized Multi-Sensor Data Streaming and Recording on Smartphones with the Lab Streaming Layer. Sensors, 2021; 21(23):8135. https://doi.org/10.3390/s21238135

  • Debener S, Minow F, Emkes R, Gandras K, de Vos M. How about taking a low-cost, small, and wireless EEG for a walk? Psychophysiology, 2012; 49(11):1449–1453. https://doi.org/10.1111/j.1469-8986.2012.01471.x

Lab Streaming Layer

  • Kothe C, Shirazi SY, Stenner T, Medine D, Boulay C, Grivich MI, Artoni F, Mullen T, Delorme A, Makeig S. The Lab Streaming Layer for Synchronized Multimodal Recording. Imaging Neurosci (Camb). 2025;3:IMAG.a.136. https://doi.org/10.1162/IMAG.a.136

Contributing

Contributions are welcome! Please:

  1. Open an issue describing the bug or feature request.
  2. Fork the repository and create a branch from master.
  3. Submit a pull request referencing the issue.

See CONTRIBUTING.md for details on our workflow.


Authors

Developed by the Neuropsychology Lab of Stefan Debener, University of Oldenburg, Germany.

Active Developers

Previous Developers


License

GNU General Public License v3.0 — see LICENSE for details.


Acknowledgements

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Android BuildLicense: GPL v3Latest Release

VIEWA — Live LSL Data Viewer for Android

VIEWA main screen showing live sensor streams

📋 See CHANGELOG.md for the full version history.


Citation

If you use VIEWA in your research, please cite the following publication:

Haupt T, Maanen P, Daeglau M et al. — Enhancing mobile brain and body imaging: Open-source solutions for real-world research applications. iScience, 2026; 29.

VIEWA is provided without any warranty, and without guarantee of fitness for a particular purpose. Use it at your own risk. See LICENSE for the full terms.


VIEWA turns your Android phone into a live oscilloscope for Lab Streaming Layer (LSL)[1] data.
Discover any LSL stream on your local network and watch all channels scroll in real time — no laptop, no cables, no extra software required.


Table of Contents

  1. Citation
  2. Why VIEWA?
  3. Features
  4. Getting Started
  5. Building from Source
  6. Scientific Use Cases & Publications
  7. Contributing
  8. Authors
  9. License
  10. Acknowledgements

Why VIEWA?

A signal monitor that fits in your pocket

Debugging a mobile EEG or sensor pipeline usually means squinting at a laptop screen across the room. VIEWA puts a live, scrolling view of every channel directly in your hand — useful during setup, during data collection, and during troubleshooting.

Works with any LSL stream

VIEWA auto-discovers every stream advertised on the local network, regardless of the device or software that sends it. If it speaks LSL, VIEWA can plot it.

Designed for use with RECORDA and SENDA

VIEWA pairs naturally with RECORDA (our Android LSL recorder) and SENDA (our Android sensor streamer), forming a fully self-contained mobile neuroscience toolkit — stream, record, and visualise, all from Android devices.


Features

  • 📈 Live multi-channel plotting — smooth, scrolling real-time charts for every incoming channel
  • 📡 Auto-discovery — finds all active LSL streams on the local network automatically
  • 🔧 Lightweight & self-contained — no extra services or companion software needed on the phone
  • 🌙 Dark & light theme — follows the system-wide display setting
  • 📱 Minimum Android 11 (API 30), tested on Android 14 (API 34)

Getting Started

Download the latest release APK and sideload it onto your Android smartphone or tablet (Android 11 or higher).

Tip: Make sure the phone running VIEWA and all streaming devices are on the same local network (same Wi-Fi access point). LSL uses multicast discovery, which does not work across separate network segments.


Building from Source

We recommend installing the pre-built release APK. If you need to build from source:

Prerequisites

ToolVersion
Android StudioArctic Fox or newer
Android SDK PlatformAPI 34

Steps

git clone https://github.com/NeuropsyOL/VIEWA.git
cd VIEWA

Open the project in Android Studio, let Gradle sync, then select your device/emulator and click Run ▶.

Or from the command line:

./gradlew installDebug

Scientific Use Cases & Publications

VIEWA was developed to support mobile neuroscience and biosignal research at the Neuropsychology Lab of Stefan Debener, University of Oldenburg, Germany.

The VIEWA / RECORDA / SENDA ecosystem builds on a broader line of mobile neuroscience research from our lab:

  • Blum S, Hölle D, Bleichner MG, Debener S. Pocketable Labs for Everyone: Synchronized Multi-Sensor Data Streaming and Recording on Smartphones with the Lab Streaming Layer. Sensors, 2021; 21(23):8135. https://doi.org/10.3390/s21238135

  • Debener S, Minow F, Emkes R, Gandras K, de Vos M. How about taking a low-cost, small, and wireless EEG for a walk? Psychophysiology, 2012; 49(11):1449–1453. https://doi.org/10.1111/j.1469-8986.2012.01471.x

Lab Streaming Layer

  • Kothe C, Shirazi SY, Stenner T, Medine D, Boulay C, Grivich MI, Artoni F, Mullen T, Delorme A, Makeig S. The Lab Streaming Layer for Synchronized Multimodal Recording. Imaging Neurosci (Camb). 2025;3:IMAG.a.136. https://doi.org/10.1162/IMAG.a.136

Contributing

Contributions are welcome! Please:

  1. Open an issue describing the bug or feature request.
  2. Fork the repository and create a branch from master.
  3. Submit a pull request referencing the issue.

See CONTRIBUTING.md for details on our workflow.


Authors

Developed by the Neuropsychology Lab of Stefan Debener, University of Oldenburg, Germany.

Active Developers

Previous Developers


License

GNU General Public License v3.0 — see LICENSE for details.


Acknowledgements

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

Android BuildLicense: GPL v3Latest Release

VIEWA — Live LSL Data Viewer for Android

VIEWA main screen showing live sensor streams

📋 See CHANGELOG.md for the full version history.


Citation

If you use VIEWA in your research, please cite the following publication:

Haupt T, Maanen P, Daeglau M et al. — Enhancing mobile brain and body imaging: Open-source solutions for real-world research applications. iScience, 2026; 29.

VIEWA is provided without any warranty, and without guarantee of fitness for a particular purpose. Use it at your own risk. See LICENSE for the full terms.


VIEWA turns your Android phone into a live oscilloscope for Lab Streaming Layer (LSL)[1] data.
Discover any LSL stream on your local network and watch all channels scroll in real time — no laptop, no cables, no extra software required.


Table of Contents

  1. Citation
  2. Why VIEWA?
  3. Features
  4. Getting Started
  5. Building from Source
  6. Scientific Use Cases & Publications
  7. Contributing
  8. Authors
  9. License
  10. Acknowledgements

Why VIEWA?

A signal monitor that fits in your pocket

Debugging a mobile EEG or sensor pipeline usually means squinting at a laptop screen across the room. VIEWA puts a live, scrolling view of every channel directly in your hand — useful during setup, during data collection, and during troubleshooting.

Works with any LSL stream

VIEWA auto-discovers every stream advertised on the local network, regardless of the device or software that sends it. If it speaks LSL, VIEWA can plot it.

Designed for use with RECORDA and SENDA

VIEWA pairs naturally with RECORDA (our Android LSL recorder) and SENDA (our Android sensor streamer), forming a fully self-contained mobile neuroscience toolkit — stream, record, and visualise, all from Android devices.


Features

  • 📈 Live multi-channel plotting — smooth, scrolling real-time charts for every incoming channel
  • 📡 Auto-discovery — finds all active LSL streams on the local network automatically
  • 🔧 Lightweight & self-contained — no extra services or companion software needed on the phone
  • 🌙 Dark & light theme — follows the system-wide display setting
  • 📱 Minimum Android 11 (API 30), tested on Android 14 (API 34)

Getting Started

Download the latest release APK and sideload it onto your Android smartphone or tablet (Android 11 or higher).

Tip: Make sure the phone running VIEWA and all streaming devices are on the same local network (same Wi-Fi access point). LSL uses multicast discovery, which does not work across separate network segments.


Building from Source

We recommend installing the pre-built release APK. If you need to build from source:

Prerequisites

ToolVersion
Android StudioArctic Fox or newer
Android SDK PlatformAPI 34

Steps

git clone https://github.com/NeuropsyOL/VIEWA.git
cd VIEWA

Open the project in Android Studio, let Gradle sync, then select your device/emulator and click Run ▶.

Or from the command line:

./gradlew installDebug

Scientific Use Cases & Publications

VIEWA was developed to support mobile neuroscience and biosignal research at the Neuropsychology Lab of Stefan Debener, University of Oldenburg, Germany.

The VIEWA / RECORDA / SENDA ecosystem builds on a broader line of mobile neuroscience research from our lab:

  • Blum S, Hölle D, Bleichner MG, Debener S. Pocketable Labs for Everyone: Synchronized Multi-Sensor Data Streaming and Recording on Smartphones with the Lab Streaming Layer. Sensors, 2021; 21(23):8135. https://doi.org/10.3390/s21238135

  • Debener S, Minow F, Emkes R, Gandras K, de Vos M. How about taking a low-cost, small, and wireless EEG for a walk? Psychophysiology, 2012; 49(11):1449–1453. https://doi.org/10.1111/j.1469-8986.2012.01471.x

Lab Streaming Layer

  • Kothe C, Shirazi SY, Stenner T, Medine D, Boulay C, Grivich MI, Artoni F, Mullen T, Delorme A, Makeig S. The Lab Streaming Layer for Synchronized Multimodal Recording. Imaging Neurosci (Camb). 2025;3:IMAG.a.136. https://doi.org/10.1162/IMAG.a.136

Contributing

Contributions are welcome! Please:

  1. Open an issue describing the bug or feature request.
  2. Fork the repository and create a branch from master.
  3. Submit a pull request referencing the issue.

See CONTRIBUTING.md for details on our workflow.


Authors

Developed by the Neuropsychology Lab of Stefan Debener, University of Oldenburg, Germany.

Active Developers

Previous Developers


License

GNU General Public License v3.0 — see LICENSE for details.


Acknowledgements

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Android BuildLicense: GPL v3Latest Release

VIEWA — Live LSL Data Viewer for Android

VIEWA main screen showing live sensor streams

📋 See CHANGELOG.md for the full version history.


Citation

If you use VIEWA in your research, please cite the following publication:

Haupt T, Maanen P, Daeglau M et al. — Enhancing mobile brain and body imaging: Open-source solutions for real-world research applications. iScience, 2026; 29.

VIEWA is provided without any warranty, and without guarantee of fitness for a particular purpose. Use it at your own risk. See LICENSE for the full terms.


VIEWA turns your Android phone into a live oscilloscope for Lab Streaming Layer (LSL)[1] data.
Discover any LSL stream on your local network and watch all channels scroll in real time — no laptop, no cables, no extra software required.


Table of Contents

  1. Citation
  2. Why VIEWA?
  3. Features
  4. Getting Started
  5. Building from Source
  6. Scientific Use Cases & Publications
  7. Contributing
  8. Authors
  9. License
  10. Acknowledgements

Why VIEWA?

A signal monitor that fits in your pocket

Debugging a mobile EEG or sensor pipeline usually means squinting at a laptop screen across the room. VIEWA puts a live, scrolling view of every channel directly in your hand — useful during setup, during data collection, and during troubleshooting.

Works with any LSL stream

VIEWA auto-discovers every stream advertised on the local network, regardless of the device or software that sends it. If it speaks LSL, VIEWA can plot it.

Designed for use with RECORDA and SENDA

VIEWA pairs naturally with RECORDA (our Android LSL recorder) and SENDA (our Android sensor streamer), forming a fully self-contained mobile neuroscience toolkit — stream, record, and visualise, all from Android devices.


Features

  • 📈 Live multi-channel plotting — smooth, scrolling real-time charts for every incoming channel
  • 📡 Auto-discovery — finds all active LSL streams on the local network automatically
  • 🔧 Lightweight & self-contained — no extra services or companion software needed on the phone
  • 🌙 Dark & light theme — follows the system-wide display setting
  • 📱 Minimum Android 11 (API 30), tested on Android 14 (API 34)

Getting Started

Download the latest release APK and sideload it onto your Android smartphone or tablet (Android 11 or higher).

Tip: Make sure the phone running VIEWA and all streaming devices are on the same local network (same Wi-Fi access point). LSL uses multicast discovery, which does not work across separate network segments.


Building from Source

We recommend installing the pre-built release APK. If you need to build from source:

Prerequisites

ToolVersion
Android StudioArctic Fox or newer
Android SDK PlatformAPI 34

Steps

git clone https://github.com/NeuropsyOL/VIEWA.git
cd VIEWA

Open the project in Android Studio, let Gradle sync, then select your device/emulator and click Run ▶.

Or from the command line:

./gradlew installDebug

Scientific Use Cases & Publications

VIEWA was developed to support mobile neuroscience and biosignal research at the Neuropsychology Lab of Stefan Debener, University of Oldenburg, Germany.

The VIEWA / RECORDA / SENDA ecosystem builds on a broader line of mobile neuroscience research from our lab:

  • Blum S, Hölle D, Bleichner MG, Debener S. Pocketable Labs for Everyone: Synchronized Multi-Sensor Data Streaming and Recording on Smartphones with the Lab Streaming Layer. Sensors, 2021; 21(23):8135. https://doi.org/10.3390/s21238135

  • Debener S, Minow F, Emkes R, Gandras K, de Vos M. How about taking a low-cost, small, and wireless EEG for a walk? Psychophysiology, 2012; 49(11):1449–1453. https://doi.org/10.1111/j.1469-8986.2012.01471.x

Lab Streaming Layer

  • Kothe C, Shirazi SY, Stenner T, Medine D, Boulay C, Grivich MI, Artoni F, Mullen T, Delorme A, Makeig S. The Lab Streaming Layer for Synchronized Multimodal Recording. Imaging Neurosci (Camb). 2025;3:IMAG.a.136. https://doi.org/10.1162/IMAG.a.136

Contributing

Contributions are welcome! Please:

  1. Open an issue describing the bug or feature request.
  2. Fork the repository and create a branch from master.
  3. Submit a pull request referencing the issue.

See CONTRIBUTING.md for details on our workflow.


Authors

Developed by the Neuropsychology Lab of Stefan Debener, University of Oldenburg, Germany.

Active Developers

Previous Developers


License

GNU General Public License v3.0 — see LICENSE for details.


Acknowledgements

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Android BuildLicense: GPL v3Latest Release

VIEWA — Live LSL Data Viewer for Android

VIEWA main screen showing live sensor streams

📋 See CHANGELOG.md for the full version history.


Citation

If you use VIEWA in your research, please cite the following publication:

Haupt T, Maanen P, Daeglau M et al. — Enhancing mobile brain and body imaging: Open-source solutions for real-world research applications. iScience, 2026; 29.

VIEWA is provided without any warranty, and without guarantee of fitness for a particular purpose. Use it at your own risk. See LICENSE for the full terms.


VIEWA turns your Android phone into a live oscilloscope for Lab Streaming Layer (LSL)[1] data.
Discover any LSL stream on your local network and watch all channels scroll in real time — no laptop, no cables, no extra software required.


Table of Contents

  1. Citation
  2. Why VIEWA?
  3. Features
  4. Getting Started
  5. Building from Source
  6. Scientific Use Cases & Publications
  7. Contributing
  8. Authors
  9. License
  10. Acknowledgements

Why VIEWA?

A signal monitor that fits in your pocket

Debugging a mobile EEG or sensor pipeline usually means squinting at a laptop screen across the room. VIEWA puts a live, scrolling view of every channel directly in your hand — useful during setup, during data collection, and during troubleshooting.

Works with any LSL stream

VIEWA auto-discovers every stream advertised on the local network, regardless of the device or software that sends it. If it speaks LSL, VIEWA can plot it.

Designed for use with RECORDA and SENDA

VIEWA pairs naturally with RECORDA (our Android LSL recorder) and SENDA (our Android sensor streamer), forming a fully self-contained mobile neuroscience toolkit — stream, record, and visualise, all from Android devices.


Features

  • 📈 Live multi-channel plotting — smooth, scrolling real-time charts for every incoming channel
  • 📡 Auto-discovery — finds all active LSL streams on the local network automatically
  • 🔧 Lightweight & self-contained — no extra services or companion software needed on the phone
  • 🌙 Dark & light theme — follows the system-wide display setting
  • 📱 Minimum Android 11 (API 30), tested on Android 14 (API 34)

Getting Started

Download the latest release APK and sideload it onto your Android smartphone or tablet (Android 11 or higher).

Tip: Make sure the phone running VIEWA and all streaming devices are on the same local network (same Wi-Fi access point). LSL uses multicast discovery, which does not work across separate network segments.


Building from Source

We recommend installing the pre-built release APK. If you need to build from source:

Prerequisites

ToolVersion
Android StudioArctic Fox or newer
Android SDK PlatformAPI 34

Steps

git clone https://github.com/NeuropsyOL/VIEWA.git
cd VIEWA

Open the project in Android Studio, let Gradle sync, then select your device/emulator and click Run ▶.

Or from the command line:

./gradlew installDebug

Scientific Use Cases & Publications

VIEWA was developed to support mobile neuroscience and biosignal research at the Neuropsychology Lab of Stefan Debener, University of Oldenburg, Germany.

The VIEWA / RECORDA / SENDA ecosystem builds on a broader line of mobile neuroscience research from our lab:

  • Blum S, Hölle D, Bleichner MG, Debener S. Pocketable Labs for Everyone: Synchronized Multi-Sensor Data Streaming and Recording on Smartphones with the Lab Streaming Layer. Sensors, 2021; 21(23):8135. https://doi.org/10.3390/s21238135

  • Debener S, Minow F, Emkes R, Gandras K, de Vos M. How about taking a low-cost, small, and wireless EEG for a walk? Psychophysiology, 2012; 49(11):1449–1453. https://doi.org/10.1111/j.1469-8986.2012.01471.x

Lab Streaming Layer

  • Kothe C, Shirazi SY, Stenner T, Medine D, Boulay C, Grivich MI, Artoni F, Mullen T, Delorme A, Makeig S. The Lab Streaming Layer for Synchronized Multimodal Recording. Imaging Neurosci (Camb). 2025;3:IMAG.a.136. https://doi.org/10.1162/IMAG.a.136

Contributing

Contributions are welcome! Please:

  1. Open an issue describing the bug or feature request.
  2. Fork the repository and create a branch from master.
  3. Submit a pull request referencing the issue.

See CONTRIBUTING.md for details on our workflow.


Authors

Developed by the Neuropsychology Lab of Stefan Debener, University of Oldenburg, Germany.

Active Developers

Previous Developers


License

GNU General Public License v3.0 — see LICENSE for details.


Acknowledgements

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

Android BuildLicense: GPL v3Latest Release

VIEWA — Live LSL Data Viewer for Android

VIEWA main screen showing live sensor streams

📋 See CHANGELOG.md for the full version history.


Citation

If you use VIEWA in your research, please cite the following publication:

Haupt T, Maanen P, Daeglau M et al. — Enhancing mobile brain and body imaging: Open-source solutions for real-world research applications. iScience, 2026; 29.

VIEWA is provided without any warranty, and without guarantee of fitness for a particular purpose. Use it at your own risk. See LICENSE for the full terms.


VIEWA turns your Android phone into a live oscilloscope for Lab Streaming Layer (LSL)[1] data.
Discover any LSL stream on your local network and watch all channels scroll in real time — no laptop, no cables, no extra software required.


Table of Contents

  1. Citation
  2. Why VIEWA?
  3. Features
  4. Getting Started
  5. Building from Source
  6. Scientific Use Cases & Publications
  7. Contributing
  8. Authors
  9. License
  10. Acknowledgements

Why VIEWA?

A signal monitor that fits in your pocket

Debugging a mobile EEG or sensor pipeline usually means squinting at a laptop screen across the room. VIEWA puts a live, scrolling view of every channel directly in your hand — useful during setup, during data collection, and during troubleshooting.

Works with any LSL stream

VIEWA auto-discovers every stream advertised on the local network, regardless of the device or software that sends it. If it speaks LSL, VIEWA can plot it.

Designed for use with RECORDA and SENDA

VIEWA pairs naturally with RECORDA (our Android LSL recorder) and SENDA (our Android sensor streamer), forming a fully self-contained mobile neuroscience toolkit — stream, record, and visualise, all from Android devices.


Features

  • 📈 Live multi-channel plotting — smooth, scrolling real-time charts for every incoming channel
  • 📡 Auto-discovery — finds all active LSL streams on the local network automatically
  • 🔧 Lightweight & self-contained — no extra services or companion software needed on the phone
  • 🌙 Dark & light theme — follows the system-wide display setting
  • 📱 Minimum Android 11 (API 30), tested on Android 14 (API 34)

Getting Started

Download the latest release APK and sideload it onto your Android smartphone or tablet (Android 11 or higher).

Tip: Make sure the phone running VIEWA and all streaming devices are on the same local network (same Wi-Fi access point). LSL uses multicast discovery, which does not work across separate network segments.


Building from Source

We recommend installing the pre-built release APK. If you need to build from source:

Prerequisites

ToolVersion
Android StudioArctic Fox or newer
Android SDK PlatformAPI 34

Steps

git clone https://github.com/NeuropsyOL/VIEWA.git
cd VIEWA

Open the project in Android Studio, let Gradle sync, then select your device/emulator and click Run ▶.

Or from the command line:

./gradlew installDebug

Scientific Use Cases & Publications

VIEWA was developed to support mobile neuroscience and biosignal research at the Neuropsychology Lab of Stefan Debener, University of Oldenburg, Germany.

The VIEWA / RECORDA / SENDA ecosystem builds on a broader line of mobile neuroscience research from our lab:

  • Blum S, Hölle D, Bleichner MG, Debener S. Pocketable Labs for Everyone: Synchronized Multi-Sensor Data Streaming and Recording on Smartphones with the Lab Streaming Layer. Sensors, 2021; 21(23):8135. https://doi.org/10.3390/s21238135

  • Debener S, Minow F, Emkes R, Gandras K, de Vos M. How about taking a low-cost, small, and wireless EEG for a walk? Psychophysiology, 2012; 49(11):1449–1453. https://doi.org/10.1111/j.1469-8986.2012.01471.x

Lab Streaming Layer

  • Kothe C, Shirazi SY, Stenner T, Medine D, Boulay C, Grivich MI, Artoni F, Mullen T, Delorme A, Makeig S. The Lab Streaming Layer for Synchronized Multimodal Recording. Imaging Neurosci (Camb). 2025;3:IMAG.a.136. https://doi.org/10.1162/IMAG.a.136

Contributing

Contributions are welcome! Please:

  1. Open an issue describing the bug or feature request.
  2. Fork the repository and create a branch from master.
  3. Submit a pull request referencing the issue.

See CONTRIBUTING.md for details on our workflow.


Authors

Developed by the Neuropsychology Lab of Stefan Debener, University of Oldenburg, Germany.

Active Developers

Previous Developers


License

GNU General Public License v3.0 — see LICENSE for details.


Acknowledgements

Releases

Packages

Contributors

Languages