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.

Telegram on Raspberry Pi

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

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 quitTelegram on Raspberry Pi schematic

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"

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.”


Source: Telegram on Raspberry Pi

About The Author

Ibrar Ayyub

I am an experienced technical writer holding a Master's degree in computer science from BZU Multan, Pakistan University. With a background spanning various industries, particularly in home automation and engineering, I have honed my skills in crafting clear and concise content. Proficient in leveraging infographics and diagrams, I strive to simplify complex concepts for readers. My strength lies in thorough research and presenting information in a structured and logical format.

Follow Us:

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top