{"id":18078172,"url":"https://github.com/noahcardoza/tello-pi-bridge","last_synced_at":"2026-05-16T22:06:24.672Z","repository":{"id":237060378,"uuid":"793727372","full_name":"NoahCardoza/tello-pi-bridge","owner":"NoahCardoza","description":"How to connect to a Tello drone via wired ethernet to a Raspberry Pi 4B.","archived":false,"fork":false,"pushed_at":"2024-12-15T18:18:46.000Z","size":14,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-05T20:32:58.578Z","etag":null,"topics":["dji","raspberry-pi","tellodrone"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/NoahCardoza.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-04-29T18:52:01.000Z","updated_at":"2024-12-15T18:18:50.000Z","dependencies_parsed_at":"2025-02-13T20:45:34.938Z","dependency_job_id":null,"html_url":"https://github.com/NoahCardoza/tello-pi-bridge","commit_stats":null,"previous_names":["noahcardoza/tello-pi-bridge"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/NoahCardoza/tello-pi-bridge","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NoahCardoza%2Ftello-pi-bridge","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NoahCardoza%2Ftello-pi-bridge/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NoahCardoza%2Ftello-pi-bridge/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NoahCardoza%2Ftello-pi-bridge/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/NoahCardoza","download_url":"https://codeload.github.com/NoahCardoza/tello-pi-bridge/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NoahCardoza%2Ftello-pi-bridge/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266665781,"owners_count":23964972,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-23T02:00:09.312Z","response_time":66,"last_error":null,"robots_txt_status":null,"robots_txt_updated_at":null,"robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dji","raspberry-pi","tellodrone"],"created_at":"2024-10-31T12:13:01.475Z","updated_at":"2026-05-16T22:06:19.640Z","avatar_url":"https://github.com/NoahCardoza.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Tello Pi Bridge\n\n## Introduction\n\nThis guide explains how to use a Rasberry Pi 4B to connect to a Tello drone via Ethernet. This is useful for situations where you'd like your host machine to maintain an Internet connection while communicating with a Tello drone. Usually this isn't possible since the Tello drone broadcasts it's own WiFi and you must connect your machine to it to communicate with it.\n\n\n## Requirements\n\n- Mac\n- Raspberry Pi 4B\n- Tello Drone\n\n## (Optional) Setting up a Serial Connection to the Raspberry Pi\n\nIf you don't have an extra monitor/keyboard/mouse to connect to the Raspberry Pi, you can set up a serial connection to the Raspberry Pi. This will allow you to connect to the Raspberry Pi via a USB cable. A USB to TTL serial cable is required for this. Here is the one I used:\n\nhttps://www.amazon.com/dp/B07DP7SPNH\n\nThis can be helpful since when messing with network configurations you often need to reset your network services which will disconnect you from the Raspberry Pi if you're connected via SSH.\n\nTo set this up, you'll need to update the Raspberry Pi's boot configuration. Run the following command:\n\n```bash\nsudo nano /boot/firmware/config.txt\n```\n\nAdd the following line to the file:\n\n```bash\nenable_uart=1\n```\n\nSave the file and exit the editor. Now we need to update the Raspberry Pi's serial configuration. Run the following command:\n\n```bash\nsudo nano /boot/firmware/cmdline.txt\n```\n\nAdd the following line to the beginning of the file. It is important that this is placed on the same line as the rest of the text in the file. Make sure there is a space between this and the existing text.\n\n```txt\nconsole=serial0,115200\n```\n\nSave the file, exit the editor, and reboot pi with `sudo reboot`.\n\nOnce the Raspberry Pi has rebooted, you can connect the USB to TTL serial cable to the Raspberry Pi and your host machine. You can then use a serial terminal program like `screen` to connect to the Raspberry Pi.\n\nTo connect to the Raspberry Pi using `screen`, first find the name of the serial port on your host machine. Run the following command:\n\n\n```bash\nls /dev/tty.usbserial*\n```\n\nYou should see a device named something like `/dev/tty.usbserial-XXXX`. This is the serial port. Now you can connect to the Raspberry Pi using the following command:\n\n```bash\nscreen /dev/tty.usbserial-XXXX 115200 --fullscreen\n```\n\nYou should now see the Raspberry Pi's console output. You can now interact with the Raspberry Pi as if you were connected to it via a monitor and keyboard.\n\n## Setting Static IPs\n\n## On the Mac\n\nOn the Mac, we need to set a static IP for the Ethernet interface. This is so we can communicate with the Tello drone over a wired connection.\n\nTo list all network services on your Mac, run the following command:\n\n```bash\nnetworksetup -listallnetworkservices\n```\n\nYou should see a service named something along the lines of `USB 10/100/1000 LAN`, it may differ depending on the USB(-C) adapter you are using. This is the Ethernet interface. We need to set a static IP for this interface. To do this, we need to modify the network interfaces file. Run the following command:\n\n\n```bash\nnetworksetup -setmanual \"USB 10/100/1000 LAN\" 192.168.2.1 255.255.255.0\n```\n\nYou can confirm the changes have taken effect by running the following command:\n\n```bash\nifconfig\n```\n\nYou should see one of the interfaces now has the IP address `192.168.2.1`.\n\n## On the Raspberry Pi\n\nOn the Raspberry Pi, we need to set a static IP for the Ethernet interface. This is so we can communicate with the Tello drone over a wired connection.\n\n\nFirst, we need to find the name of the Ethernet interface. Run the following command:\n\n\n```bash\nifconfig\n```\n\nYou should see an interface named `eth0`. This is the Ethernet interface. We need to set a static IP for this interface. To do this, we need to modify the network interfaces file. Run the following command:\n\n\n```bash\nsudo nano /etc/network/interfaces.d/eth0-static-ip.conf\n```\n\nAdd the following lines to the file:\n\n```bash\nauto eth0\niface eth0 inet static\n    address 192.168.2.2\n    netmask 255.255.255.0\n```\n\nSave the file and exit the editor. Now we need to restart the networking service to apply the changes. Run the following command:\n\n```bash\nsudo systemctl restart networking\n```\n\n**Note**: If you're connected to the Raspberry Pi via SSH, this will disconnect you from the Raspberry Pi. You can reconnect to the Raspberry Pi using the static IP you set earlier.\n\n## Connecting the Pi to the Drone's WiFi\n\nNow that we have set static IPs for both the Mac and the Raspberry Pi, we can connect the Raspberry Pi to the Tello drone's WiFi. This is so we can communicate with the Tello drone over a wireless connection.\n\nFirst, power on the Tello drone. Once the Tello drone has booted up and the WiFi is ready to connect (the light on the drone will be blinking yellow), run the following command on the Raspberry Pi:\n\n```bash\nsudo nmcli device wifi rescan\nsudo nmcli device wifi scan\n```\n\nYou may need to wait a few seconds and run the last command a few times until you see the Tello drone's WiFi network in the list of available networks. The network name should be something like `TELLO-XXXXXX`.\n\nNow we can connect to the Tello drone's WiFi network. Run the following command:\n\n```bash\nsudo nmcli device wifi connect TELLO-XXXXXX\n```\n\nYou should now be connected to the Tello drone's WiFi network. You can confirm this by running the following command:\n\n```bash\nping 192.168.10.2 -c 1\n```\n\n## Communicating from your Mac to the drone\n\nNow that we have connected the Raspberry Pi to the Tello drone's WiFi network, we can **ALMOST** communicate with the Tello drone from the Mac.\n\nThe last step is to run the tello-forward.sh script which can be found in the repository on the Pi. The reason we cannot simply setup packet forwarding\nis becaus the drone uses UDP and the packets addressed to the 192.168.10.2 host no matter which hosts send them UDP packets. The tello-forward.sh script\nsets up bidirectional forwarding between the Mac and the drone, sending all packets from the Mac to the Pi on ports 11111, 8889, and 8890 to the drone and vice versa.\n\nIf you'd like to monitor the drone from the Tello app while running scripts on your Mac, see the comments in the tello-forward.sh script for instructions on how to do this.\n\nBefore you can do this, you'll need to install `socat` on the Pi. Run the following command:\n\n```bash\nsudo apt-get install socat\n```\n\nNow you can run the tello-forward.sh script. Run the following command:\n\n```bash\nsudo ./tello-forward.sh\n```\n\nIf you get a \"Permission denied\" error, you may need to make the script executable. Run the following command:\n\n```bash\nsudo chmod +x tello-forward.sh\n```\n\nNow on your Mac, you can use the standard Tello SDK commands to communicate with the Tello drone. All you need to do is set the host parameter to the IP address of your Pi when initiating the Tello class.\n\n```py\nfrom djitellopy import Tello\n\ntello = Tello(host='192.168.2.2')\ntello.connect()\n\ntello.takeoff()\n\ntello.land()\n```\n\nIf you've yet to install the Tello SDK, you can do so by running the following command:\n\n```bash\npip install djitellopy\n```\n\n## Conclusion\n\nYou should now be able to connect to a Tello drone via Ethernet using a Raspberry Pi 4B. This is useful for situations where you'd like your host machine to maintain an Internet connection while communicating with a Tello drone. Usually this isn't possible since the Tello drone broadcasts it's own WiFi and you mush connect your machine to it to communicate with it.\n\nIf you connect other devices to the drone's WiFi network, make sure to connect the Pi first. The drone only sends UDP packets to 192.168.10.2 which is assigned to the first device that connects to it. While you'll be able to control the drone from your phone, you won't be getting the state packets from the drone since your phone's IP address will be 192.168.10.3. If you'd like to monitor the drone from the Tello app while running scripts on your Mac, see the comments in the tello-forward.sh script for instructions on how to do this.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnoahcardoza%2Ftello-pi-bridge","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnoahcardoza%2Ftello-pi-bridge","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnoahcardoza%2Ftello-pi-bridge/lists"}