This repository has been archived on 2023-10-10. You can view files and clone it, but cannot push or open issues/pull-requests.

151 lines
5.7 KiB

<!-- vim: ts=4 sw=4 et
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
<title>TFTPy - A Pure Python TFTP Protocol Implementation</title>
<link href="main.css" name="main" type="text/css" rel="stylesheet" />
<div class="banner">
<h1>TFTPy - A Pure Python TFTP Protocol Implementation</h1>
<div class="menu">
<li><a href="#about">About TFTPy</a></li>
<li><a href="#features">Features</a></li>
<li><a href="#plans">Future Plans</a></li>
<li><a href="#code">The Code</a></li>
<li><a href="#support">Support</a></li>
<li><a href="#doc">Documentation</a></li>
<div class="content">
<a name="about" />
<h2>About TFTPy</h2>
TFTPy is a pure Python implementation of the
<a href="">Trivial FTP protocol</a>.
I wrote it because the VoIP company that I work for uses TFTP to
pull firmware loads for our sets, and at times when this doesn't
work we use a Windows-based diagnostic tool to troubleshoot the
As all of the computers in my home run some flavour of <a
href="">Linux</a> or <a
href="">FreeBSD</a>, this tool
wasn't much use to me, so I started one of my own. I decided to
use <a href="">Python</a> since it's
comfortable and available for the platforms that I care about, and
was surprised to not find a pre-existing TFTP library for it. So,
I wrote one, and here it is. It's not 1.0 yet, but downloading is
production-ready IMHO, as some of the people using it tell me.
<a name="features" />
<p>At this time, it supports the following RFCs:
<a href="">1350</a>
The TFTP Protocol, revision 2 (octet mode only)
<a href="">2347</a>
TFTP Option Extension
<a href="">2348</a>
TFTP Blocksize Option
<a href="">2349</a>
TFTP Timeout Interval and Transfer Size Options (just the
tsize option right now)
<a name="plans" />
<h2>Future Plans</h2>
I do have plans for this code before a 1.0 release, including the
<li>Full RFC 1350 compliance, including netascii mode (I could
care less about "mail" mode).</li>
<li>Symmetric UDP support. I don't know of an RFC for this but
it's a no-brainer for NAT traversal. In this mode the server
should always respond on the port that the RRQ was sent to, so
stateful firewalls will permit the response.</li>
<a name="code" />
<h2>The Code</h2>
You can find the latest release at the SourceForge <a
href="">Project Page</a>, as a
source tarball. It should also be in <a
href="">PyPi</a>, so you can use
easy_install if you prefer.
The latest code though is always on the master branch in <a
href="">Github</a>. I did use SVN in SourceForge
for a while, but after discovering Git I couldn't go back. To
clone the repository, run the following command using git
git clone git://
Patches welcome, even if I can't guarantee response time. You can
of course send me the url of a public git repository to pull from
as well.
<p>The Github project page is <a
<a name="support" />
SourceForge doesn't make the mailing list easy to find, so
is a direct link</a> if you'd like to join.</p>
Feel free to <a href="">email me</a>
with any questions, or contact me through github.
To submit a bug report, please use the
<a href="">issue tracker</a>
in the Github project page. I've shut down the trackers at
sourceforge for now.
<a name="doc" />
I am working on some documentation via the
<a href="">Sphinx project</a>. The current
ones are <a href="sphinx/index.html">here</a>.
<hr />
<p>Last updated: May 10, 2010.</p>