summaryrefslogtreecommitdiffstats
path: root/contrib/cp210x-program/doc/index.html
blob: 1998469e825f97710828e146df2e35be68344be8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="en"><head>


<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>CP210x Programmer</title>
<style type="text/css">
</style>
</head><body>
    <h1>CP210x Programmer</h1>

    <p>
        <strong>ATTENTION: THIS VERSION OF cp210x-program IS NOT FULLY TESTED.
IT MAY RENDER YOUR CP210x USELESS OR DESTROY IT.</strong>
    </p>

    <ul>
        <li><a href="http://sourceforge.net/projects/cp210x-program">Project Page</a>
        </li><li><a href="http://sourceforge.net/tracker/?group_id=193093">Bug Database</a></li>
        <li><a href="http://sourceforge.net/project/showfiles.php?group_id=193093">Download</a></li>
        <li><a href="http://cp210x-program.hg.sourceforge.net/hgweb/cp210x-program/cp210x-program/">Code Repository (Mercurial)</a>
    </li></ul>
    
    <p>
Be aware that the current version is only tested on CP2102.
    </p>
    
    <p>
The goal of this library is to provide access to the EEPROM of an Silabs CP210x
under Linux. 
    </p>
    
    <p>
The CP210x is an USB-to-serial chip used in a lot of USB devices (similar to
FTDIs and PL2303). The CP210x has a EEPROM on the chip which can be programmed
via USB. Silabs provides already a library and gui programm to program this
EEPROM, but only for windows. 
    </p>
    
    <p>
This project uses results from monitoring the USB bus when the windows library
programms an CP210x. The windows library was not disassembled for this protocol
analysis.
    </p>
    
    <p>
When the programm is finished, a later goal would be to provide a library which
can be used to access further functions of the CP210x like the general IO pins
of the CP2103. The goal is not to provide an tty driver, such driver exists
already for linux and BSD.
    </p>
    
    
    <dl>
        <dt>Version:</dt> <dd>0.2</dd>
        <dt>Author:</dt> <dd>Johannes Hölzl &lt;johannes.hoelzl@gmx.de&gt;</dd>
    </dl>
    
    <h2>Dependencies</h2>

    <ul>
        <li>Python &gt;= 2.4</li>
        <li>ctypes &gt;= 0.9 (only when Python 2.4 is used)</li>
        <li>libusb 0.1</li>
    </ul>
    
    <p>
Since libusb is available on most Linux, Mac OS X and FreeBSD cp210x-program
should run flawlessly on these platforms. Currently it is only tested on
Linux 2.6 (Ubuntu).
    </p>
    
    <p>
If cp210x-program should run as non-root user, add the udev rule found in
doc/45-cp210x-programming.rules to /etc/udev/rules.d. When devices with already
programmed IDs are reprogrammed at this IDs to 45-cp210x-programming.rules.
    </p>
    
    <h2>Usage</h2>

    <h3>Read EEPROM content into hexfile:</h3>
<pre>$ cp210x-program --read-cp210x -F eeprom-content.hex
</pre>

    <h3>Show EEPROM content from device 002 on bus 001:</h3>
<pre>$ cp210x-program --read-cp210x -m 001/002
</pre>

    <h3>Write some data to device with vendor id 0x10C4 and product id 0xEA62:</h3>
<pre>$ cp210x-program --write-cp210x -m 10C4:EA62 \
                 --set-product-string="Product String" \
                 --set-max-power=100 \
                 --set-bus-powered=no
</pre>

    <h2>TODO</h2>
    
    <ul>
        <li>Test on other than CP2102</li>
        <li>Implement CP2103 GIOP settings</li>
        <li>Implement GUI</li>
    </ul>

    <h2>Development</h2>
    
    <ul>
      <li>Clone repository: <code>hg clone http://cp210x-program.hg.sourceforge.net/hgweb/cp210x-program/cp210x-program/</code></li>
      <li>Run, Change, Debug, Commit, Repeat</li>
      <li>Ask me to get commit rights</li>
      <li>Profit!</li>
    </ul>

    <h2>Links</h2>
    
    <ul>
        <li><a href="http://www.silabs.com/tgwWebApp/public/web_content/products/Microcontrollers/Interface/en/interface.htm">CP210x Product page on Silicon Labs</a></li>
        <li><a href="http://www.silabs.com/public/documents/tpub_doc/anote/Microcontrollers/Interface/en/an144.pdf">AN114 Customization Guide</a> (<a href="http://www.silabs.com/public/documents/software_doc/othersoftware/Microcontrollers/Interface/en/an144sw.zip">Software</a>)</li>
        <li><a href="http://www.silabs.com/public/documents/tpub_doc/anote/Microcontrollers/Interface/en/an205.pdf">AN205 CP210x Baudrate Guide</a> (<a href="http://www.silabs.com/public/documents/software_doc/othersoftware/Microcontrollers/en/AN205SW.zip">Software</a>)</li>
        <li><a href="http://www.silabs.com/public/documents/tpub_doc/anote/Microcontrollers/Interface/en/an223.pdf">AN223 Port Configuration and GPIO for CP210x</a> (<a href="http://www.silabs.com/public/documents/software_doc/othersoftware/Microcontrollers/Interface/en/AN223SW.zip">Software</a>)</li>
    </ul>
    
    <h2>License</h2>

    <p>
    The python package 'cp210x' and the python script 'cp210x-program' are provided
under the terms of the GNU LGPL. See LICENSE.
    </p>
    
</body></html>