Meshenger is meant to be an open-source, P2P audio and video communication application, that works without centralized servers, thus without a connection to the internet, does not need DHCP servers and can be used in LAN networks such as Freifunk community networks.
It was brought to life to demonstrate the use of such networks other than simply internet access as well es to discover the decentralized use of WebRTC in conjunction with IPv6.
I spent the last few weeks polishing and improving my project, getting it to a usable and stable state.
An APK with version 1.0.0 can be found here, as well as the whole source code.
In the last month i fixed a some bugs, like a wrong serialization of IPv6 addresses, making a phone ring even with the screen off, preventing duplicate contact entries, prevented the app from freezing and some more.
Of course, the app gained some new features, including a ‘settings’ page with the language, the username etc., additional information for each contact, a possibility to share contacts through third-party messengers or a QR-code, ignoring calls from unsaved contacts and several more.
Oh, and if you suddenly dislike someone, you can now simply delete him.
The app now has an ‘about’ page containing some meta-data about Meshenger as well as the license:
I extraced a lot of hard-coded strings in order to make it easier to translate the app into different languages.
As of now, it is planned for the future to implement profile photos, file transfer and asynchronous messaging.
All in all, i would conclude that Meshenger was a successful project and reached most of its goals.
It gave me the chance to dive into new subjects and learn a lot about VoIP and IPv6 as well as get to know the Freifunk community and learn about other interesting ideas.
Hi. I installed your app via f-droid. Iĺl test it with my friend via mobile 4G network. If we do an 15 Minute voice-call, how much data would be consumed?
regards
hi Andre, the app only works on the local LAN.
Traffic consumption has not been measured, nor can be limited.
Maybe someone implements Internet connectivity in the future.
Hi!
I’ve tried the app in a Community Network in South Africa, and the preliminary tests were quite good! Congratulations!
It is important to be aware that same-network is essential.
Have you thought about other discovery mechanisms?
Also, would be good to have small text messages exchange… with that, the app kills it!
Oh wow. Nice to see that you can use it. I am not the author of the App, but I can forward your message.
It would be great to see some other discovery mechanism.
But as always somebody needs to implement it. 🙂
Me and somebody else where able to get a video session going over the Internet via global IPv6 addresses and disabled firewalls.
The IP address in the contact exchange QR-Code had to be changed.
Hi I like the author to contact me. I have a proposal.
I am glad to see a peer-to-peer encrypted communication software that is not limited by servers, but sometimes we lack the motivation to build a remote local area network. Therefore, I would like to ask if there are plans to enable this software to support real peer-to-peer communication on the basis of the ipv6 internet.
For a totalitarian government, controlling servers is very simple, so a software that does not rely on servers is a good thing for us. We don’t need to prepare a node or boot server that can be easily banned, but instead use the ipv6 address that everyone has for communication, which undoubtedly greatly facilitates communication between humans.
I am looking forward to receiving your reply, it doesn’t matter whether it is yes or no.
If the final software can support ipv6 based communication under normal network conditions, which means it has the ability to break through firewalls or NATs, then such software will have a very unique advantage compared to other software that requires servers.
And for us users, it will be easier, that’s for sure. God bless you.
Hi, I need java Meshenger like Kotlin Mehenger. I have java meshenger but there are some problem. I use AndroidX. Example speakerphone,
Error: in Java Mehenger; Utils.java,
Attempt to get length of null array.
for (byte b : macBytes) {
res1.append(String.format(“%02X:”,b));
}
You can add this if (macBytes==null){
return “”;
}
this:
public static String formatAddress(byte[] macBytes){
if (macBytes==null){
return “”;
}
StringBuilder res1 = new StringBuilder();
for (byte b : macBytes) {
res1.append(String.format(“%02X:”,b));
}
if (res1.length() > 0) {
res1.deleteCharAt(res1.length() – 1);
}
return res1.toString();
}