<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Command line tools on Tinkerbus</title><link>https://tinkerbus.org/docs/cli/</link><description>Recent content in Command line tools on Tinkerbus</description><generator>Hugo</generator><language>en</language><atom:link href="https://tinkerbus.org/docs/cli/index.xml" rel="self" type="application/rss+xml"/><item><title>knxproj</title><link>https://tinkerbus.org/docs/cli/knxproj/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tinkerbus.org/docs/cli/knxproj/</guid><description>&lt;p&gt;&lt;code&gt;knxproj&lt;/code&gt; reads a &lt;code&gt;.knxproj&lt;/code&gt; file and prints information about it. It never touches the bus and never changes the file.&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;knxproj [-pwfile FILE] [-list] [-extract NAME -out FILE] project.knxproj&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;knxproj [-pwfile FILE] -device 1.1.21 [-params] project.knxproj&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;knxproj [-pwfile FILE] -ga 3/0/10 project.knxproj&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="flags"&gt;Flags&lt;/h2&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Flag&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Meaning&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;-pwfile FILE&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;File holding the project password. Without it the environment variable &lt;code&gt;KNXPROJ_PASSWORD&lt;/code&gt; is used.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;-list&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;List the entries of the outer and inner archive, with their sizes.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;-device ADDR&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Print this device (for example &lt;code&gt;1.1.21&lt;/code&gt;): product, manufacturer, place, comment, description, and its group objects with flags, data type and linked group addresses.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;-params&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;With &lt;code&gt;-device&lt;/code&gt;: also print the parameter pages with their values.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;-ga ADDR&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Print this group address (for example &lt;code&gt;3/0/10&lt;/code&gt;) with its name, data type, range, and the devices and objects linked to it.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;-extract NAME&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Write this inner entry to the file given by &lt;code&gt;-out&lt;/code&gt;.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;-out FILE&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Output file for &lt;code&gt;-extract&lt;/code&gt;. Written with mode 0600.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;With none of &lt;code&gt;-list&lt;/code&gt;, &lt;code&gt;-extract&lt;/code&gt;, &lt;code&gt;-device&lt;/code&gt; or &lt;code&gt;-ga&lt;/code&gt;, it prints the project name and whether it is password protected.&lt;/p&gt;</description></item><item><title>knxprobe</title><link>https://tinkerbus.org/docs/cli/knxprobe/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tinkerbus.org/docs/cli/knxprobe/</guid><description>&lt;p&gt;&lt;code&gt;knxprobe&lt;/code&gt; finds KNXnet/IP gateways and opens a tunnel. By default it only listens. A few options send requests to the&#10;bus; they are marked below. It never writes to a device.&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;knxprobe -discover&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;knxprobe -addr HOST:PORT -describe&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;knxprobe -addr HOST:PORT [-tcp] [-for 30s] [-trace]&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;knxprobe -addr HOST:PORT [-read GA | -info DEV | -prop DEV:OBJ:PID[:START[:COUNT]] | -mem DEV:ADDR:LEN | -scan LINE | -progmode]&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;knxprobe -usb-list&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="flags"&gt;Flags&lt;/h2&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Flag&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Default&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Meaning&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;-addr HOST:PORT&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;none&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;The KNXnet/IP gateway. Required, except for &lt;code&gt;-discover&lt;/code&gt; (multicast) and &lt;code&gt;-usb-list&lt;/code&gt;.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;-tcp&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;off&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Tunnel over TCP instead of UDP.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;-for DURATION&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;10s&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;How long to listen (for example &lt;code&gt;30s&lt;/code&gt;, &lt;code&gt;5m&lt;/code&gt;). Interrupt with Ctrl+C to stop earlier.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;-trace&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;off&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Print every KNXnet/IP frame sent and received.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;-discover&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;off&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Multicast search for gateways, print them, and exit.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;-unicast&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;off&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;With &lt;code&gt;-discover&lt;/code&gt;: send the search request to &lt;code&gt;-addr&lt;/code&gt; instead of multicasting.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;-describe&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;off&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Describe the gateway at &lt;code&gt;-addr&lt;/code&gt; and exit.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;-usb-list&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;off&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;List plugged-in KNX USB interfaces and exit. Linux only.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;-mgmt&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;off&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Open a device management connection, hold it briefly, close it. Reads and writes nothing.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;Options that send telegrams (read-only requests), used after the tunnel is open:&lt;/p&gt;</description></item><item><title>knxdownload</title><link>https://tinkerbus.org/docs/cli/knxdownload/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tinkerbus.org/docs/cli/knxdownload/</guid><description>&lt;p&gt;&lt;code&gt;knxdownload&lt;/code&gt; builds the memory image (and for some devices the load plan) that a project device should hold, and can&#10;compare it with the real device. &lt;strong&gt;It only reads: nothing is ever written to a device by this tool.&lt;/strong&gt;&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;knxdownload -pwfile FILE -device 1.1.21 [-dump] [-plan] project.knxproj&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;knxdownload -pwfile FILE -device 1.1.21 -verify GATEWAY [-tcp] [-all] project.knxproj&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;knxdownload -pwfile FILE -device 1.1.21 -from-dump DIR [-all] project.knxproj&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;knxdownload -pwfile FILE -device 1.1.21 -xml out.xml project.knxproj&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="flags"&gt;Flags&lt;/h2&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Flag&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Meaning&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;-pwfile FILE&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;File holding the project password.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;-device ADDR&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Individual address of the project device. Required.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;-dump&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Print the image: each segment as hex.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;-plan&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Print the load plan, every operation a download would perform, and exit. Nothing is sent.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;-verify GATEWAY&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Connect through this gateway, read the device&amp;rsquo;s memory (read-only) and compare it with the image. For System B devices (mask &lt;code&gt;0x07B0&lt;/code&gt;) it compares the load images by size and checksum instead.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;-tcp&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Tunnel over TCP instead of UDP.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;-from-dump DIR&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Compare against saved reads in a directory (files named &lt;code&gt;0xADDR.txt&lt;/code&gt;, as printed by &lt;code&gt;knxprobe -mem&lt;/code&gt;) instead of the bus.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;-all&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Print every difference, not only the first 40.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;-xml FILE&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Write the application program of the device to this file and exit.&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;The output starts with the application program name, number and version, the mask, each segment with its address and&#10;size, and any notes and &lt;code&gt;WARNING&lt;/code&gt; lines from building the image. With &lt;code&gt;-verify&lt;/code&gt; or &lt;code&gt;-from-dump&lt;/code&gt; it then prints the&#10;number of differing octets per segment and the differences (image value, device value, mask).&lt;/p&gt;</description></item><item><title>knxprogram</title><link>https://tinkerbus.org/docs/cli/knxprogram/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tinkerbus.org/docs/cli/knxprogram/</guid><description>&lt;p&gt;&lt;code&gt;knxprogram&lt;/code&gt; loads the configuration of a project device into a real device. It can assign an individual address to a&#10;device in programming mode first, runs the load procedure of the application program, and verifies the result.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Without &lt;code&gt;-write&lt;/code&gt; it only reads:&lt;/strong&gt; it checks the device, saves a backup of its memory (when &lt;code&gt;-backup&lt;/code&gt; is given) and&#10;prints the plan. &lt;strong&gt;With &lt;code&gt;-write&lt;/code&gt; it changes the device&lt;/strong&gt;, and it refuses to start unless it was told which device it is&#10;(&lt;code&gt;-expect-serial&lt;/code&gt;) and where the backup goes (&lt;code&gt;-backup&lt;/code&gt;). Read &lt;a href="../../programming/safety/"&gt;safety&lt;/a&gt; and the&#10;&lt;a href="../../programming/workflow/"&gt;workflow&lt;/a&gt; before using &lt;code&gt;-write&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>knxcap</title><link>https://tinkerbus.org/docs/cli/knxcap/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://tinkerbus.org/docs/cli/knxcap/</guid><description>&lt;p&gt;&lt;code&gt;knxcap&lt;/code&gt; prints the KNX telegrams of a tunnelling capture, decoded. It is a development tool, used to compare what&#10;another tool sends with what Tinkerbus would send, and to create the capture fixtures the tests use. It does not touch the&#10;bus.&lt;/p&gt;&#10;&lt;p&gt;It reads the tab separated output of&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;tshark -r FILE.pcap -Y &lt;span class="s1"&gt;&amp;#39;tcp.port==3671 &amp;amp;&amp;amp; tcp.len&amp;gt;0&amp;#39;&lt;/span&gt; -T fields &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -e frame.number -e frame.time_relative -e ip.src -e tcp.payload&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;from standard input, or from the file named on the command line.&lt;/p&gt;</description></item></channel></rss>