mirror of
https://github.com/kidfromjupiter/nearby.git
synced 2026-09-16 15:36:12 -04:00
upddated readme
This commit is contained in:
@@ -9,142 +9,34 @@
|
||||
|
||||
https://github.com/user-attachments/assets/048afa1e-40a4-4351-a859-c81b642fc6e3
|
||||
|
||||
## What
|
||||
This repo consists of the entirety of google's open source nearby library. Currently, it is seperated into 3 sections.
|
||||
- Sharing
|
||||
- Connections
|
||||
- Presence
|
||||
Linux specific implementation and compatibility shims are provided for building **Sharing** and **Connections**.
|
||||
Nearby presence may or may not build. I haven't tested it.
|
||||
|
||||
## Why
|
||||
This repo could've been a PR on the official repo. All I've done is implement the platform abstraction layer google has provided for a linux specific environment.
|
||||
It's not like I haven't made a PR towards the official repo. I got tired of begging the official nearby maintainers for a PR review. So here we are.
|
||||
|
||||
|
||||
Moreover, all I've wanted was seamless file sharing between my android devices and my linux workstation + laptop. With this repo and the example application provided here,
|
||||
it accomplishes that goal perfectly. This repo wasn't created out of any altruistic goals or out of the goodness of my heart. I had a problem. I solved it. Simple as that.
|
||||
|
||||
This is an unofficial Linux-focused fork of Nearby.
|
||||
|
||||
## Purpose
|
||||
## How
|
||||
|
||||
The primary goal of this repository is to provide reusable Linux libraries/APIs for Nearby.
|
||||
### How to install
|
||||
*coming soon*
|
||||
### How to build
|
||||
*coming soon*
|
||||
### How to contribute
|
||||
*coming soon*
|
||||
|
||||
Nearby Share sample applications are included and will continue to be supported, but they are examples first and library integration is the main long-term target.
|
||||
## Special thanks
|
||||
|
||||
## Documentation
|
||||
|
||||
Technical deep dives are being moved to the project wiki so this README can stay focused on setup and status.
|
||||
|
||||
- Wiki: https://github.com/kidfromjupiter/nearby/wiki
|
||||
|
||||
## Requirements
|
||||
|
||||
To run this project on Linux, you need:
|
||||
- BlueZ `5.86` or higher
|
||||
- `NetworkManager`
|
||||
- `Avahi`
|
||||
- Qt (required for the tray UI app)
|
||||
|
||||
## Installation (End Users)
|
||||
|
||||
1. Download the latest release archive from the Releases page.
|
||||
- https://github.com/kidfromjupiter/nearby/releases
|
||||
|
||||
2. Extract it:
|
||||
|
||||
```bash
|
||||
tar -xzf nearby-file-share-linux-*.tar.gz
|
||||
```
|
||||
|
||||
3. Install the application, shared library, and launcher:
|
||||
(run this from the extracted bundle directory)
|
||||
|
||||
```bash
|
||||
./install_nearby_file_share.sh
|
||||
```
|
||||
|
||||
4. Apply a temporary BlueZ service override (required for now).
|
||||
Create/edit the `bluetooth.service` override:
|
||||
|
||||
```bash
|
||||
sudo systemctl edit bluetooth
|
||||
```
|
||||
|
||||
Add:
|
||||
|
||||
```ini
|
||||
[Service]
|
||||
ExecStart=
|
||||
ExecStart=/usr/local/libexec/bluetooth/bluetoothd -E --debug=src/plugin.c --noplugin=bap,bass,mcp,vcp,micp,ccp,csip,tmap,asha,midi
|
||||
```
|
||||
|
||||
Then reload and restart:
|
||||
|
||||
```bash
|
||||
sudo systemctl daemon-reload
|
||||
sudo systemctl restart bluetooth
|
||||
```
|
||||
|
||||
These plugins are currently disabled due to an ongoing likely upstream BlueZ bug:
|
||||
`bap,bass,mcp,vcp,micp,ccp,csip,tmap,asha,midi`.
|
||||
This workaround will be removed once the issue is fixed.
|
||||
|
||||
This installs to `~/.local` by default.
|
||||
|
||||
For system-wide installation:
|
||||
|
||||
```bash
|
||||
./install_nearby_file_share.sh --system
|
||||
```
|
||||
|
||||
The installer also installs:
|
||||
- `nearby_qml_file_tray_app`
|
||||
- `libnearby_sharing_api_shared.so`
|
||||
- `.desktop` launcher entry
|
||||
- launcher icon
|
||||
|
||||
## Build From Source
|
||||
|
||||
Build and install the Linux Nearby Sharing library:
|
||||
|
||||
```bash
|
||||
./sharing/linux/install_nearby_sharing_service.sh
|
||||
```
|
||||
|
||||
Build tray sample app:
|
||||
|
||||
```bash
|
||||
cd sharing/linux/qml_tray_app
|
||||
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DNEARBY_PREFIX=/usr/local
|
||||
cmake --build build -j
|
||||
./build/nearby_qml_file_tray_app
|
||||
```
|
||||
|
||||
## Current Status and Compatibility
|
||||
|
||||
The Linux implementation currently works with the reverse-engineered certificate manager used in this project.
|
||||
|
||||
Compatibility can still break if Google changes certificate manager behavior or protocol details. That component is closed source, so upstream regressions may be hard to diagnose immediately.
|
||||
|
||||
## Test Scope and Known Limits
|
||||
|
||||
- Single-file sharing has been tested.
|
||||
- Multi-transfer behavior in one app lifetime has not been fully validated.
|
||||
- Current practical testing often restarts the app before a new transfer.
|
||||
|
||||
In this project, a "session" means one application lifetime (start to exit).
|
||||
|
||||
After one transfer, some endpoints/internal state can reset or change, and this is still being investigated.
|
||||
|
||||
## Known Issues
|
||||
|
||||
- Linux hotspot startup can be slow.
|
||||
- Connecting to another device's hotspot can be slow on Linux.
|
||||
- Android-initiated connection formation can be very slow.
|
||||
- 5 GHz hotspot discovery and connection support is currently removed due to Intel Wi-Fi driver instability related to LAR behavior on Linux. There is no known fix yet; this may be re-enabled in a later release.
|
||||
|
||||
A likely area to investigate is connection negotiation paths that Linux may not handle optimally yet.
|
||||
|
||||
## Wi-Fi Direct
|
||||
|
||||
Wi-Fi Direct is theoretically possible, but not implemented yet.
|
||||
|
||||
Reason: NetworkManager does not natively support the Wi-Fi Direct Group Owner flow required here.
|
||||
|
||||
## Contributing
|
||||
|
||||
- General: `CONTRIBUTING.md`
|
||||
- Linux-specific: `LINUX_CONTRIBUTING.md`
|
||||
|
||||
## License
|
||||
|
||||
Released under `LICENSE`.
|
||||
https://github.com/proatgram and https://github.com/vibhavp
|
||||
*they were the original authors of the linux platform support [PR](https://github.com/google/nearby/pull/2098) that I have based much of this codebase upon. I am standing on the shoulders
|
||||
of giants*
|
||||
|
||||
Reference in New Issue
Block a user