Meshcore Plugin for Pidgin

Connect to Meshcore mesh networks directly from your favorite IM client. Experience decentralized communication with full channel support, dynamic user tracking, and real-time routing information.

Download Now Get Started

📥 Download

📦

Compiled Binary

Ready-to-use plugin file. Just download and copy to your Pidgin plugins directory.

Download libmeshcore.so
💻

Source Code

Complete C source code for compilation and customization. Includes all latest features and fixes.

Download libmeshcore.c

Quick Install

For the binary: Download and copy to ~/.purple/plugins/

For source: Compile with gcc and the provided compilation command below

🚀 Key Features

👥

Dynamic User Tracking

Users automatically appear in channel lists when they send messages. No fake users or static lists - see who's actually active on the mesh network.

🎯

Accurate Channel Mapping

Fixed channel ID mapping ensures messages go to the correct channels. No more message swapping between different channels.

📡

Routing Information

See hop count and SNR (Signal-to-Noise Ratio) for each message, giving you insight into mesh network performance and message paths.

💬

Multi-Channel Support

Join multiple channels simultaneously. Public channel (0) and numbered channels (1, 2, 3...) with proper chat room functionality.

🔌

Multiple Connection Types

Supports BLE, TCP, and Serial connections to Meshcore devices. Configure your preferred connection method easily.

Real-time Messaging

2-second polling for incoming messages with automatic channel discovery. Stay connected to your mesh network in real-time.

📸 Screenshots

Meshcore Channels in Pidgin

Multiple Channels

See all available mesh channels in your buddy list, with automatic discovery and joining.

Meshcore Chat Window

Chat Interface

Clean chat interface showing messages with routing information, dynamic user lists, and real-time communication.

⚙️ Installation

Install Dependencies

Make sure you have the required development packages:

sudo apt-get install libpurple-dev libglib2.0-dev libjson-glib-dev build-essential
Install meshcore-cli

Ensure meshcore-cli is installed and accessible in your PATH:

which meshcore-cli
Option A: Use Pre-compiled Binary

Download the binary and copy to your plugins directory:

wget https://flexluthor.neocities.org/libmeshcore.so cp libmeshcore.so ~/.purple/plugins/
Option B: Compile from Source

Download source and compile:

wget https://flexluthor.neocities.org/libmeshcore.c gcc -shared -fPIC -DPURPLE_PLUGINS \ -I/usr/include/glib-2.0 \ -I/usr/lib/glib-2.0/include \ -I/usr/include/libpurple \ -I/usr/include/json-glib-1.0 \ -lglib-2.0 -lgobject-2.0 -lpurple -ljson-glib-1.0 \ -o libmeshcore.so libmeshcore.c cp libmeshcore.so ~/.purple/plugins/
Configure Account

In Pidgin, add a new account with protocol "Meshcore" and configure your device path (e.g., /dev/ttyACM0) and baudrate (115200).

🔧 Technical Details

New in Latest Version

  • Fixed Command Syntax - Uses correct meshcore-cli commands: public for channel 0, chan X for other channels
  • Dynamic User Tracking - Users automatically added to channels when they send messages
  • Channel ID Mapping - Proper mapping between Pidgin chat IDs and meshcore channel indices
  • Routing Information - Display hop count and SNR for each message
  • libpurple Compatibility - Works with older libpurple versions (2.x)

Technical Specifications

Language: C
Dependencies: libpurple, glib2.0, json-glib
Backend: meshcore-cli
Connections: Serial, BLE, TCP
Message Polling: 2 seconds
Discovery Interval: 60 seconds

Command Mapping

Channel 0 (Public): meshcore-cli public "message" Channel 1+: meshcore-cli chan <number> "message" Direct Messages: meshcore-cli send_direct "user" "message"

Features

  • ✅ Multi-channel chat rooms
  • ✅ Direct messaging
  • ✅ Dynamic user discovery
  • ✅ Automatic channel joining
  • ✅ Message routing information
  • ✅ Real-time message polling
  • ✅ Configurable device settings
  • ✅ Buddy list integration