Telegram on Raspberry Pi




In one of our last tutorials we have installed WhatsApp on Raspberry. Whatsapp at the moment is definitely the most famous app for messaging services, but there are also many alternatives although little known. One of these is Telegram.

"Telegram is a cloud-based mobile and desktop messaging app with a focus on security and speed. Unlike WhatsApp, Telegram is cloud-based and heavily encrypted. As a result, you can access your messages from several devices at once, including tablets and computers, and share an unlimited number of photos, videos and files (doc, zip, mp3, etc) of up to 1,5 GB. Thanks to our multi-data center infrastructure and encryption, Telegram is also faster and way more secure. On top of that, Telegram is free and will stay free — no ads, no subscription fees, forever." From

Well, then we try to install it on Raspberry

You need:

a Raspberry Pi B or B+, with the latest version of Raspbian, or our MIcroSD Card 8GB Class 10 Raspbian preinstalled.


Update the packages with

sudo apt-get update
sudo apt-get upgrade

Install libs: readline or libedit, openssl and (if you want to use config) libconfig and liblua. If you do not want to use them pass options --disable-libconfig and --disable-liblua respectively.

sudo apt-get install libreadline-dev libconfig-dev libssl-dev lua5.2 liblua5.2-dev libevent-dev make

Clone GitHub Repository

git clone --recursive && cd tg 

Running this command takes a little time and after install is done.

Step 1: Utilization:

Navigate to the folder tg

cd tg


bin/telegram-cli -k -W

The first time we start telegram we must enter the phone number, including land code (for Italy is +39).

You should receive on your phone a sms message with a code, enter it and hit "Enter"

Now we are ready to use telegram, if you send a message from your smartphone you can see it on terminal.

To send a message type

msg Name_Lastname My message from Raspberry

Telegram on Raspberry first message

To send a photo type

send_photo Name_Lastname /folder/photo.jpg

Telegram on Raspberry send photo

Other supported commands are:

msg Text - sends message to this peer
fwd - forward message to user. You can see message numbers starting client with -N
chat_with_peer starts one on one chat session with this peer. /exit or /quit to end this mode.
add_contact - tries to add contact to contact-list by phone
rename_contact - tries to rename contact. If you have another device it will be a fight
mark_read - mark read all received messages with peer
delete_msg - deletes message (not completly, though)
restore_msg - restores delete message. Impossible for secret chats. Only possible short time (one hour, I think) after deletion


send_photo - sends photo to peer
send_video - sends video to peer
send_text - sends text file as plain messages
load_photo/load_video/load_video_thumb/load_audio/load_document/load_document_thumb - loads photo/video/audio/document to download dir
view_photo/view_video/view_video_thumb/view_audio/view_document/view_document_thumb - loads photo/video to download dir and starts system default viewer
fwd_media send media in your message. Use this to prevent sharing info about author of media (though, it is possible to determine user_id from media itself, it is not possible get access_hash of this user)
set_profile_photo - sets userpic. Photo should be square, or server will cut biggest central square part

Group chat options

chat_info - prints info about chat
chat_add_user - add user to chat
chat_del_user - remove user from chat
create_group_chat ... - creates a groupchat with users, use chat_add_user to add more users
chat_set_photo - sets group chat photo. Same limits as for profile photos.


search pattern - searches pattern in messages with peer
global_search pattern - searches pattern in all messages

Secret chat

create_secret_chat - creates secret chat with this user
visualize_key - prints visualization of encryption key. You should compare it to your partner's one
set_ttl - sets ttl to secret chat. Though client does ignore it, client on other end can make use of it
accept_secret_chat - manually accept secret chat (only useful when starting with -E key)

Stats and various info

user_info - prints info about user
history [limit] - prints history (and marks it as read). Default limit = 40
dialog_list - prints info about your dialogs
contact_list - prints info about users in your contact list
suggested_contacts - print info about contacts, you have max common friends
stats - just for debugging
show_license - prints contents of GPLv2
help - prints this help


export_card - print your 'card' that anyone can later use to import your contact
import_card - gets user by card. You can write messages to him after that.


quit - quit
safe_quit - wait for all queries to end then quit

Step 2: Send Message Automatically

To send message automatically create a file

sudo nano /home/pi/

with this content

  cd ${tgpath}
  (echo "msg $to $msg"; echo "safe_quit") | ${tgpath}/bin/telegram-cli -k -W

save and exit, give it execution permissions

sudo chmod -R 0655 /home/pi/

test it with

/home/pi/ Name_lastname "your message"

Raspberry Pi Telegram automatic message

Raspberry Pi Telegram alert

to send an image create a file

sudo nano /home/pi/

with this content

  cd ${tgpath}
  (echo "send_photo $to $msg"; echo "safe_quit") | ${tgpath}/bin/telegram-cli -k -W

save and exit, give it execution permissions

sudo chmod -R 0655 /home/pi/

test it with

/home/pi/ Name_Lastname /folder/photo.png

The opportunities that telegram offers are very interesting and in the next tutorials we will see how to use them, for example, Raspberry could send us a photo after an alarm or ask Raspberry to do an action following a particular message, for example "turn on heating."

Follow us on social to stay informed.

2 People Made This Project!


  • Frozen Treats Challenge

    Frozen Treats Challenge
  • Beauty Tips Contest

    Beauty Tips Contest
  • Fandom Contest

    Fandom Contest

66 Discussions


Question 11 months ago on Step 2


When I run Make I get an error "No Targets specified and no makefile found"




1 answer

Answer 11 months ago

Small progress. Got make working*

need to add libjansson-dev to the apt-get


sudo apt-get install libreadline-dev libconfig-dev libssl-dev lua5.2 liblua5.2-dev libevent-dev libjansson-dev make

Then configure works and you can run make command. But then Make fails. see image


1 year ago

its working nicely.., after telegram starts working wait few mins until it asks for a phonenumber then enter phone number , register :y and then give first name and last name


Question 1 year ago on Introduction


when I execute the command "make". This error is displayed: "make: *** There is no rule to build the target 'tgl /', needed for 'auto /'. High."
What I have to do to solve it?

1 year ago

hi, im doing a Owncloud using Raspberry Pi. How to send the notifications to Telegram when the files that in my Owncloud has been edited or created ?so far Owncloud just send notification to email only. anyone can help please?


2 years ago

Makefile:48: recipe for target 'objs/interface.o' failed

while make command this error occures. can anyone help


3 years ago

All the steps worked but:

bin/telegram-cli -k

Then I get:

Telegram-cli version 1.4.1, Copyright (C) 2013-2015 Vitaly Valtman
Telegram-cli comes with ABSOLUTELY NO WARRANTY; for details type `show_license'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show_license' for details.
Telegram-cli uses libtgl version 2.1.0
Telegram-cli includes software developed by the OpenSSL Project
for use in the OpenSSL Toolkit. (
I: config dir=[/home/pi/.telegram-cli]
> telegram-cli: tgl/mtproto-utils.c:101: BN2ull: Assertion `0' failed.
SIGNAL received

I use a Raspberry Pi 3. Any ideas on how to solve this.

Ps I initially had an issue with libjannson, but on I found how to install the libjansson.

3 replies

Reply 3 years ago

I found a solution on

Basketeer commented 7 days ago
I now got the client running by commenting out lines 101 and 115 in tgl/mtproto-utils.c and recompiling it.
I know - a bad hack but it works for now ;)

So what I did:

cd tg/tgl
sudo nano mtproto-utils.c

static unsigned long long BN2ull (TGLC_bn *b) {
if (sizeof (unsigned long) == 8) {
return TGLC_bn_get_word (b);
} else if (sizeof (unsigned long long) == 8) {

//assert (0); // As long as nobody ever uses this code, assume it is broken.

unsigned long long tmp;
/* Here be dragons, but it should be okay due to be64toh */
TGLC_bn_bn2bin (b, (unsigned char *) &tmp);
return be64toh (tmp);
} else {
assert (0);


static void ull2BN (TGLC_bn *b, unsigned long long val) {
if (sizeof (unsigned long) == 8 || val < (1ll << 32)) {
TGLC_bn_set_word (b, val);
} else if (sizeof (unsigned long long) == 8) {

// assert (0); // As long as nobody ever uses this code, assume it is broken.

/* Here be dragons, but it should be okay due to htobe64 */
TGLC_bn_bin2bn ((unsigned char *) &val, 8, b);
} else {
assert (0);



Reply 2 years ago

hello, i have this problem too, but you dont say to run make again ....:) thanks

so after that we have to run :

cd ..



3 years ago

Hi man, first congratulation for your tutorial, but i have a problem.

When I write bin/telegram-cli -k -W

the program don't ask me for telephone, what can i do??

Ciao, in primis complimenti per il tutorial, ma ho un problema.

Quando scrivo bin/telegram-cli -k -W

il programma non mi chiede il numero di telefono, cosa posso fare??


3 years ago

Hi all

I am new to this when i tried to use the make command i got the following error

No targets specified and no makefile found. Stop

Any help would be greatl appreciated thanks


3 years ago

Hi, I followed the instructions, but when I run the 'make' command, I get this error. Any suggestions?

pi@raspberrypi:~/tg $ make
make: *** No targets specified and no makefile found. Stop.


3 years ago

Simple instruction how to run Telegram on rpi:


3 years ago

I'M Stuckkkk!!!!!!!

Everyything works fine till 1St step i.e message is sent manually with commands

but while sending the message automatically I'm getting an error which says:

FAIL: 38: can not parse arg #1

> safe_quit

> > All done. Exit

any soln to this??

thank u

1 reply

Reply 3 years ago

Hello, you may try like that...





cd ${tgpath}

${tgpath}/bin/telegram-cli -k -W -e "msg $to $msg"


3 years ago

Hi there, I was able to do all the above steps. However, I am trying to send a picture from a mobile to the raspberry pi. Any idea how I will be able to see the photo? Which folder will the photo be saved in. Please help! Thanks !


3 years ago

Thank you this is awesome. Had some problems with access, but used "sudo" and then after some do-overs it worked - thank you

1 reply