]> pere.pagekite.me Git - homepage.git/blob - blog/index.rss
New post on ONVIF.
[homepage.git] / blog / index.rss
1 <?xml version="1.0" encoding="utf-8"?>
2 <rss version='2.0' xmlns:lj='http://www.livejournal.org/rss/lj/1.0/' xmlns:atom="http://www.w3.org/2005/Atom">
3 <channel>
4 <title>Petter Reinholdtsen</title>
5 <description></description>
6 <link>https://people.skolelinux.org/pere/blog/</link>
7 <atom:link href="https://people.skolelinux.org/pere/blog/index.rss" rel="self" type="application/rss+xml" />
8
9 <item>
10 <title>Managing and using ONVIF IP cameras with Linux</title>
11 <link>https://people.skolelinux.org/pere/blog/Managing_and_using_ONVIF_IP_cameras_with_Linux.html</link>
12 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Managing_and_using_ONVIF_IP_cameras_with_Linux.html</guid>
13 <pubDate>Wed, 19 Oct 2022 12:30:00 +0200</pubDate>
14 <description>&lt;p&gt;Recently I have been looking at how to control and collect data
15 from a handful IP cameras using Linux. I both wanted to change their
16 settings and to make their imagery available via a free software
17 service under my control. Here is a summary of the tools I found.&lt;/p&gt;
18
19 &lt;p&gt;First I had to identify the cameras and their protocols. As far as
20 I could tell, they were using some SOAP looking protocol and their
21 internal web server seem to only work with Microsoft Internet Explorer
22 with some proprietary binary plugin, which in these days of course is
23 a security disaster and also made it impossible for me to use the
24 camera web interface. Luckily I discovered that the SOAP looking
25 protocol is actually following &lt;a href=&quot;https://www.onvif.org/&quot;&gt;the
26 ONVIF specification&lt;/a&gt;, which seem to be supported by a lot of IP
27 cameras these days.&lt;/p&gt;
28
29 &lt;p&gt;Once the protocol was identified, I was able to find what appear to
30 be the most popular way to configure ONVIF cameras, the free software
31 Windows tool named
32 &lt;a href=&quot;https://sourceforge.net/projects/onvifdm/&quot;&gt;ONVIF Device
33 Manager&lt;/a&gt;. Lacking any other options at the time, I tried
34 unsuccessfully to get it running using Wine, but was missing a dotnet
35 40 library and I found no way around it to run it on Linux.&lt;/p&gt;
36
37 &lt;p&gt;The next tool I found to configure the cameras were a non-free Linux Qt
38 client &lt;a href=&quot;https://www.lingodigit.com/onvif_nvcdemo.html&quot;&gt;ONVIF
39 Device Tool&lt;/a&gt;. I did not like its terms of use, so did not spend
40 much time on it.&lt;/p&gt;
41
42 &lt;p&gt;To collect the video and make it available in a web interface, I
43 found the Zoneminder tool in Debian. A recent version was able to
44 automatically detect and configure ONVIF devices, so I could use it to
45 set up motion detection in and collection of the camera output. I had
46 initial problems getting the ONVIF autodetection to work, as both
47 Firefox and Chromium &lt;a href=&quot;https://bugs.debian.org/1001188&quot;&gt;refused
48 the inter-tab communication&lt;/a&gt; being used by the Zoneminder web
49 pages, but managed to get konqueror to work. Apparently the &quot;Enhanced
50 Tracking Protection&quot; in Firefox cause the problem. I ended up
51 upgrading to the Bookworm edition of Zoneminder in the process to try
52 to fix the issue, and believe the problem might be solved now.&lt;/p&gt;
53
54 &lt;p&gt;In the process I came across the nice Linux GUI tool
55 &lt;a href=&quot;https://gitlab.com/caspermeijn/onvifviewer/&quot;&gt;ONVIF Viewer&lt;/a&gt;
56 allowing me to preview the camera output and validate the login
57 passwords required. Sadly its author has grown tired of maintaining
58 the software, so it might not see any future updates. Which is sad,
59 as the viewer is sightly unstable and the picture tend to lock up.
60 Note, this lockup might be due to limitations in the cameras and not
61 the viewer implementation. I suspect the camera is only able to
62 provide pictures to one client at the time, and the Zoneminder feed
63 might interfere with the GUI viewer. I have
64 &lt;a href=&quot;https://bugs.debian.org/1000820&quot;&gt;asked for the tool to be
65 included in Debian&lt;/a&gt;.&lt;/p&gt;
66
67 &lt;p&gt;Finally, I found what appear to be very nice Linux free software
68 replacement for the Windows tool, named
69 &lt;a href=&quot;https://github.com/sr99622/libonvif/&quot;&gt;libonvif&lt;/a&gt;. It
70 provide a C library to talk to ONVIF devices as well as a command line
71 and GUI tool using the library. Using the GUI tool I was able to change
72 the admin passwords and update other settings of the cameras. I have
73 &lt;a href=&quot;https://bugs.debian.org/1021980&quot;&gt;asked for the package to be
74 included in Debian&lt;/a&gt;.&lt;/p&gt;
75
76 &lt;p&gt;As usual, if you use Bitcoin and want to show your support of my
77 activities, please send Bitcoin donations to my address
78 &lt;b&gt;&lt;a href=&quot;bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&quot;&gt;15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&lt;/a&gt;&lt;/b&gt;.&lt;/p&gt;
79
80 &lt;p&gt;&lt;strong&gt;Update 2022-10-20&lt;/strong&gt;: Since my initial publication of
81 this text, I got several suggestions for more free software Linux
82 tools. There is &lt;a href=&quot;https://github.com/quatanium/python-onvif&quot;&gt;a
83 ONVIF python library&lt;/a&gt; (already
84 &lt;a href=&quot;https://bugs.debian.org/824240&quot;&gt;requested into Debian&lt;/a&gt;) and
85 &lt;a href=&quot;https://github.com/FalkTannhaeuser/python-onvif-zeep&quot;&gt;a python 3
86 fork&lt;/a&gt; using a different SOAP dependency. There is also
87 &lt;a href=&quot;https://www.home-assistant.io/integrations/onvif/&quot;&gt;support for
88 ONVIF in Home Assistant&lt;/a&gt;, and there is an alternative to Zoneminder
89 called &lt;a href=&quot;https://www.shinobi.video/&quot;&gt;Shinobi&lt;/a&gt;. The latter
90 two are not included in Debian either. I have not tested any of these
91 so far.&lt;/p&gt;
92 </description>
93 </item>
94
95 <item>
96 <title>Time to translate the Bullseye edition of the Debian Administrator&#39;s Handbook</title>
97 <link>https://people.skolelinux.org/pere/blog/Time_to_translate_the_Bullseye_edition_of_the_Debian_Administrator_s_Handbook.html</link>
98 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Time_to_translate_the_Bullseye_edition_of_the_Debian_Administrator_s_Handbook.html</guid>
99 <pubDate>Mon, 12 Sep 2022 15:45:00 +0200</pubDate>
100 <description>&lt;p align=&quot;center&quot;&gt;&lt;img align=&quot;center&quot; src=&quot;http://people.skolelinux.org/pere/blog/images/2020-10-20-debian-handbook-nb-testprint.jpeg&quot; width=&quot;60%&quot;/&gt;&lt;/p&gt;
101
102 &lt;p&gt;(The picture is of the previous edition.)&lt;/p&gt;
103
104 &lt;p&gt;Almost two years after the previous Norwegian Bokmål translation of
105 the &quot;&lt;a href=&quot;https://debian-handbook.info/&quot;&gt;The Debian Administrator&#39;s
106 Handbook&lt;/a&gt;&quot; was published, a new edition is finally being prepared. The
107 english text is updated, and it is time to start working on the
108 translations. Around 37 percent of the strings have been updated, one
109 way or another, and the translations starting from a complete Debian Buster
110 edition now need to bring their translation up from 63% to 100%. The
111 complete book is licensed using a Creative Commons license, and has
112 been published in several languages over the years. The translations
113 are done by volunteers to bring Linux in their native tongue. The
114 last time I checked, it complete text was available in English,
115 Norwegian Bokmål, German, Indonesian, Brazil Portuguese and Spanish.
116 In addition, work has been started for Arabic (Morocco), Catalan,
117 Chinese (Simplified), Chinese (Traditional), Croatian, Czech, Danish,
118 Dutch, French, Greek, Italian, Japanese, Korean, Persian, Polish,
119 Romanian, Russian, Swedish, Turkish and Vietnamese.&lt;/p&gt;
120
121 &lt;p&gt;The translation is conducted on
122 &lt;a href=&quot;https://hosted.weblate.org/projects/debian-handbook/&quot;&gt;the
123 hosted weblate project page&lt;/a&gt;. Prospective translators are
124 recommeded to subscribe to
125 &lt;a href=&quot;http://lists.alioth.debian.org/mailman/listinfo/debian-handbook-translators&quot;&gt;the
126 translators mailing list&lt;/a&gt; and should also check out
127 &lt;a href=&quot;https://debian-handbook.info/contribute/&quot;&gt;the instructions for
128 contributors&lt;/a&gt;.&lt;/p&gt;
129
130 &lt;p&gt;I am one of the Norwegian Bokmål translators of this book, and we
131 have just started. Your contribution is most welcome.&lt;/p&gt;
132
133 &lt;p&gt;As usual, if you use Bitcoin and want to show your support of my
134 activities, please send Bitcoin donations to my address
135 &lt;b&gt;&lt;a href=&quot;bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&quot;&gt;15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&lt;/a&gt;&lt;/b&gt;.&lt;/p&gt;
136 </description>
137 </item>
138
139 <item>
140 <title>Automatic LinuxCNC servo PID tuning?</title>
141 <link>https://people.skolelinux.org/pere/blog/Automatic_LinuxCNC_servo_PID_tuning_.html</link>
142 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Automatic_LinuxCNC_servo_PID_tuning_.html</guid>
143 <pubDate>Sat, 16 Jul 2022 22:30:00 +0200</pubDate>
144 <description>&lt;p&gt;While working on a CNC with servo motors controlled by the
145 &lt;a href=&quot;https://en.wikipedia.org/wiki/LinuxCNC&quot;&gt;LinuxCNC&lt;/a&gt;
146 &lt;a href=&quot;https://en.wikipedia.org/wiki/PID_controller&quot;&gt;PID
147 controller&lt;/a&gt;, I recently had to learn how to tune the collection of values
148 that control such mathematical machinery that a PID controller is. It
149 proved to be a lot harder than I hoped, and I still have not succeeded
150 in getting the Z PID controller to successfully defy gravity, nor X
151 and Y to move accurately and reliably. But while climbing up this
152 rather steep learning curve, I discovered that some motor control
153 systems are able to tune their PID controllers. I got the impression
154 from the documentation that LinuxCNC were not. This proved to be not
155 true&lt;/p&gt;
156
157 &lt;p&gt;The LinuxCNC
158 &lt;a href=&quot;http://linuxcnc.org/docs/html/man/man9/pid.9.html&quot;&gt;pid
159 component&lt;/a&gt; is the recommended PID controller to use. It uses eight
160 constants &lt;tt&gt;Pgain&lt;/tt&gt;, &lt;tt&gt;Igain&lt;/tt&gt;, &lt;tt&gt;Dgain&lt;/tt&gt;,
161 &lt;tt&gt;bias&lt;/tt&gt;, &lt;tt&gt;FF0&lt;/tt&gt;, &lt;tt&gt;FF1&lt;/tt&gt;, &lt;tt&gt;FF2&lt;/tt&gt; and
162 &lt;tt&gt;FF3&lt;/tt&gt; to calculate the output value based on current and wanted
163 state, and all of these need to have a sensible value for the
164 controller to behave properly. Note, there are even more values
165 involved, theser are just the most important ones. In my case I need
166 the X, Y and Z axes to follow the requested path with little error.
167 This has proved quite a challenge for someone who have never tuned a
168 PID controller before, but there is at least some help to be found.
169
170 &lt;p&gt;I discovered that included in LinuxCNC was this old PID component
171 at_pid claiming to have auto tuning capabilities. Sadly it had been
172 neglected since 2011, and could not be used as a plug in replacement
173 for the default pid component. One would have to rewriting the
174 LinuxCNC HAL setup to test at_pid. This was rather sad, when I wanted
175 to quickly test auto tuning to see if it did a better job than me at
176 figuring out good P, I and D values to use.&lt;/p&gt;
177
178 &lt;p&gt;I decided to have a look if the situation could be improved. This
179 involved trying to understand the code and history of the pid and
180 at_pid components. Apparently they had a common ancestor, as code
181 structure, comments and variable names were quite close to each other.
182 Sadly this was not reflected in the git history, making it hard to
183 figure out what really happened. My guess is that the author of
184 &lt;a href=&quot;https://github.com/LinuxCNC/linuxcnc/blob/master/src/hal/components/at_pid.c&quot;&gt;at_pid.c&lt;/a&gt;
185 took a version of
186 &lt;a href=&quot;https://github.com/LinuxCNC/linuxcnc/blob/master/src/hal/components/pid.c&quot;&gt;pid.c&lt;/a&gt;,
187 rewrote it to follow the structure he wished pid.c to have, then added
188 support for auto tuning and finally got it included into the LinuxCNC
189 repository. The restructuring and lack of early history made it
190 harder to figure out which part of the code were relevant to the auto
191 tuning, and which part of the code needed to be updated to work the
192 same way as the current pid.c implementation. I started by trying to
193 isolate relevant changes in pid.c, and applying them to at_pid.c. My
194 aim was to make sure the at_pid component could replace the pid
195 component with a simple change in the HAL setup loadrt line, without
196 having to &quot;rewire&quot; the rest of the HAL configuration. After a few
197 hours following this approach, I had learned quite a lot about the
198 code structure of both components, while concluding I was heading down
199 the wrong rabbit hole, and should get back to the surface and find a
200 different path.&lt;/p&gt;
201
202 &lt;p&gt;For the second attempt, I decided to throw away all the PID control
203 related part of the original at_pid.c, and instead isolate and lift
204 the auto tuning part of the code and inject it into a copy of pid.c.
205 This ensured compatibility with the current pid component, while
206 adding auto tuning as a run time option. To make it easier to identify
207 the relevant parts in the future, I wrapped all the auto tuning code
208 with &#39;#ifdef AUTO_TUNER&#39;. The end result behave just like the current
209 pid component by default, as that part of the code is identical. The
210 &lt;a href=&quot;https://github.com/LinuxCNC/linuxcnc/pull/1820&quot;&gt;end result
211 entered the LinuxCNC master branch&lt;/a&gt; a few days ago.&lt;/p&gt;
212
213 &lt;p&gt;To enable auto tuning, one need to set a few HAL pins in the PID
214 component. The most important ones are &lt;tt&gt;tune-effort&lt;/tt&gt;,
215 &lt;tt&gt;tune-mode&lt;/tt&gt; and &lt;tt&gt;tune-start&lt;/tt&gt;. But lets take a step
216 back, and see what the auto tuning code will do. I do not know the
217 mathematical foundation of the at_pid algorithm, but from observation
218 I can tell that the algorithm will, when enabled, produce a square
219 wave pattern centered around the &lt;tt&gt;bias&lt;/tt&gt; value on the output pin
220 of the PID controller. This can be seen using the HAL Scope provided
221 by LinuxCNC. In my case, this is translated into voltage (+-10V) sent
222 to the motor controller, which in turn is translated into motor speed.
223 So at_pid will ask the motor to move the axis back and forth. The
224 number of cycles in the pattern is controlled by the
225 &lt;tt&gt;tune-cycles&lt;/tt&gt; pin, and the extremes of the wave pattern is
226 controlled by the &lt;tt&gt;tune-effort&lt;/tt&gt; pin. Of course, trying to
227 change the direction of a physical object instantly (as in going
228 directly from a positive voltage to the equivalent negative voltage)
229 do not change velocity instantly, and it take some time for the object
230 to slow down and move in the opposite direction. This result in a
231 more smooth movement wave form, as the axis in question were vibrating
232 back and forth. When the axis reached the target speed in the
233 opposing direction, the auto tuner change direction again. After
234 several of these changes, the average time delay between the &#39;peaks&#39;
235 and &#39;valleys&#39; of this movement graph is then used to calculate
236 proposed values for Pgain, Igain and Dgain, and insert them into the
237 HAL model to use by the pid controller. The auto tuned settings are
238 not great, but htye work a lot better than the values I had been able
239 to cook up on my own, at least for the horizontal X and Y axis. But I
240 had to use very small &lt;tt&gt;tune-effort&lt;tt&gt; values, as my motor
241 controllers error out if the voltage change too quickly. I&#39;ve been
242 less lucky with the Z axis, which is moving a heavy object up and
243 down, and seem to confuse the algorithm. The Z axis movement became a
244 lot better when I introduced a &lt;tt&gt;bias&lt;/tt&gt; value to counter the
245 gravitational drag, but I will have to work a lot more on the Z axis
246 PID values.&lt;/p&gt;
247
248 &lt;p&gt;Armed with this knowledge, it is time to look at how to do the
249 tuning. Lets say the HAL configuration in question load the PID
250 component for X, Y and Z like this:&lt;/p&gt;
251
252 &lt;blockquote&gt;&lt;pre&gt;
253 loadrt pid names=pid.x,pid.y,pid.z
254 &lt;/pre&gt;&lt;/blockquote&gt;
255
256 &lt;p&gt;Armed with the new and improved at_pid component, the new line will
257 look like this:&lt;/p&gt;
258
259 &lt;blockquote&gt;&lt;pre&gt;
260 loadrt at_pid names=pid.x,pid.y,pid.z
261 &lt;/pre&gt;&lt;/blockquote&gt;
262
263 &lt;p&gt;The rest of the HAL setup can stay the same. This work because the
264 components are referenced by name. If the component had used count=3
265 instead, all use of pid.# had to be changed to at_pid.#.&lt;/p&gt;
266
267 &lt;p&gt;To start tuning the X axis, move the axis to the middle of its
268 range, to make sure it do not hit anything when it start moving back
269 and forth. Next, set the &lt;tt&gt;tune-effort&lt;/tt&gt; to a low number in the
270 output range. I used 0.1 as my initial value. Next, assign 1 to the
271 &lt;tt&gt;tune-mode&lt;/tt&gt; value. Note, this will disable the pid controlling
272 part and feed 0 to the output pin, which in my case initially caused a
273 lot of drift. In my case it proved to be a good idea with X and Y to
274 tune the motor driver to make sure 0 voltage stopped the motor
275 rotation. On the other hand, for the Z axis this proved to be a bad
276 idea, so it will depend on your setup. It might help to set the
277 &lt;tt&gt;bias&lt;/tt&gt; value to a output value that reduce or eliminate the
278 axis drift. Finally, after setting &lt;tt&gt;tune-mode&lt;/tt&gt;, set
279 &lt;tt&gt;tune-start&lt;/tt&gt; to 1 to activate the auto tuning. If all go well,
280 your axis will vibrate for a few seconds and when it is done, new
281 values for Pgain, Igain and Dgain will be active. To test them,
282 change &lt;tt&gt;tune-mode&lt;/tt&gt; back to 0. Note that this might cause the
283 machine to suddenly jerk as it bring the axis back to its commanded
284 position, which it might have drifted away from during tuning. To
285 summarize with some halcmd lines:&lt;/p&gt;
286
287 &lt;blockquote&gt;&lt;pre&gt;
288 setp pid.x.tune-effort 0.1
289 setp pid.x.tune-mode 1
290 setp pid.x.tune-start 1
291 # wait for the tuning to complete
292 setp pid.x.tune-mode 0
293 &lt;/pre&gt;&lt;/blockquote&gt;
294
295 &lt;p&gt;After doing this task quite a few times while trying to figure out
296 how to properly tune the PID controllers on the machine in, I decided
297 to figure out if this process could be automated, and wrote a script
298 to do the entire tuning process from power on. The end result will
299 ensure the machine is powered on and ready to run, home all axis if it
300 is not already done, check that the extra tuning pins are available,
301 move the axis to its mid point, run the auto tuning and re-enable the
302 pid controller when it is done. It can be run several times. Check
303 out the
304 &lt;a href=&quot;https://github.com/SebKuzminsky/MazakVQC1540/blob/bon-dev/scripts/run-auto-pid-tuner&quot;&gt;run-auto-pid-tuner&lt;/a&gt;
305 script on github if you want to learn how it is done.&lt;/p&gt;
306
307 &lt;p&gt;My hope is that this little adventure can inspire someone who know
308 more about motor PID controller tuning can implement even better
309 algorithms for automatic PID tuning in LinuxCNC, making life easier
310 for both me and all the others that want to use LinuxCNC but lack the
311 in depth knowledge needed to tune PID controllers well.&lt;/p&gt;
312
313 &lt;p&gt;As usual, if you use Bitcoin and want to show your support of my
314 activities, please send Bitcoin donations to my address
315 &lt;b&gt;&lt;a href=&quot;bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&quot;&gt;15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&lt;/a&gt;&lt;/b&gt;.&lt;/p&gt;
316 </description>
317 </item>
318
319 <item>
320 <title>My free software activity of late (2022)</title>
321 <link>https://people.skolelinux.org/pere/blog/My_free_software_activity_of_late__2022_.html</link>
322 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/My_free_software_activity_of_late__2022_.html</guid>
323 <pubDate>Mon, 20 Jun 2022 14:30:00 +0200</pubDate>
324 <description>&lt;p&gt;I guess it is time to bring some light on the various free software
325 and open culture activities and projects I have worked on or been
326 involved in the last year and a half.&lt;/p&gt;
327
328 &lt;p&gt;First, lets mention the book
329 &lt;a href=&quot;http://www.hungry.com/~pere/publisher/&quot;&gt;releases I managed to
330 publish&lt;/a&gt;. The Cory Doctorow book &quot;Hvordan knuse
331 overvåkningskapitalismen&quot; argue that it is not the magic machine
332 learning of the big technology companies that causes the surveillance
333 capitalism to thrive, it is the lack of trust busting to enforce
334 existing anti-monopoly laws. I also published a family of
335 dictionaries for machinists, one sorted on the English words, one
336 sorted on the Norwegian and the last sorted on the North Sámi words.
337 A bit on the back burner but not forgotten is the Debian
338 Administrators Handbook, where a new edition is being worked on. I
339 have not spent as much time as I want to help bring it to completion,
340 but hope I will get more spare time to look at it before the end of
341 the year.&lt;/p&gt;
342
343 &lt;p&gt;With my Debian had I have spent time on several projects, both
344 updating existing packages, helping to bring in new packages and
345 working with upstream projects to try to get them ready to go into
346 Debian. The list is rather long, and I will only mention my own
347 isenkram, openmotor, vlc bittorrent plugin, xprintidle, norwegian
348 letter style for latex, bs1770gain, and recordmydesktop. In addition
349 to these I have sponsored several packages into Debian, like audmes.&lt;/p&gt;
350
351 &lt;p&gt;The last year I have looked at several infrastructure projects for
352 collecting meter data and video surveillance recordings. This include
353 several ONVIF related tools like onvifviewer and zoneminder as well as
354 rtl-433, wmbusmeters and rtl-wmbus.&lt;/p&gt;
355
356 &lt;p&gt;In parallel with this I have looked at fabrication related free
357 software solutions like pycam and LinuxCNC. The latter recently
358 gained improved translation support using po4a and weblate, which was
359 a harder nut to crack that I had anticipated when I started.&lt;/p&gt;
360
361 &lt;p&gt;Several hours have been spent translating free software to
362 Norwegian Bokmål on the Weblate hosted service. Do not have a
363 complete list, but you will find my contributions in at least gnucash,
364 minetest and po4a.&lt;/p&gt;
365
366 &lt;p&gt;I also spent quite some time on the Norwegian archiving specification
367 Noark 5, and its companion project Nikita implementing the API
368 specification for Noark 5.&lt;/p&gt;
369
370 &lt;p&gt;Recently I have been looking into free software tools to do company
371 accounting here in Norway., which present an interesting mix between
372 law, rules, regulations, format specifications and API interfaces.&lt;/p&gt;
373
374 &lt;p&gt;I guess I should also mention the Norwegian community driven
375 government interfacing projects Mimes Brønn and Fiksgatami, which have
376 ended up in a kind of limbo while the future of the projects is being
377 worked out.&lt;/p&gt;
378
379 &lt;p&gt;These are just a few of the projects I have been involved it, and
380 would like to give more visibility. I&#39;ll stop here to avoid delaying
381 this post.&lt;/p&gt;
382
383 &lt;p&gt;As usual, if you use Bitcoin and want to show your support of my
384 activities, please send Bitcoin donations to my address
385 &lt;b&gt;&lt;a href=&quot;bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&quot;&gt;15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&lt;/a&gt;&lt;/b&gt;.&lt;/p&gt;
386 </description>
387 </item>
388
389 <item>
390 <title>LinuxCNC translators life just got a bit easier</title>
391 <link>https://people.skolelinux.org/pere/blog/LinuxCNC_translators_life_just_got_a_bit_easier.html</link>
392 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/LinuxCNC_translators_life_just_got_a_bit_easier.html</guid>
393 <pubDate>Fri, 3 Jun 2022 21:10:00 +0200</pubDate>
394 <description>&lt;p&gt;Back in oktober last year, when I started looking at the
395 &lt;a href=&quot;https://en.wikipedia.org/wiki/LinuxCNC&quot;&gt;LinuxCNC&lt;/a&gt; system, I
396 proposed to change the documentation build system make life easier for
397 translators. The original system consisted of independently written
398 documentation files for each language, with no automated way to track
399 changes done in other translations and no help for the translators to
400 know how much was left to translated. By using
401 &lt;a href=&quot;https://po4a.org/&quot;&gt;the po4a system&lt;/a&gt; to generate POT and PO
402 files from the English documentation, this can be improved. A small
403 team of LinuxCNC contributors got together and today our labour
404 finally payed off. Since a few hours ago, it is now possible to
405 translate &lt;a href=&quot;https://hosted.weblate.org/projects/linuxcnc/&quot;&gt;the
406 LinuxCNC documentation on Weblate&lt;/a&gt;, alongside the program itself.&lt;/p&gt;
407
408 &lt;p&gt;The effort to migrate the documentation to use po4a has been both
409 slow and frustrating. I am very happy we finally made it.&lt;/p&gt;
410
411 &lt;p&gt;As usual, if you use Bitcoin and want to show your support of my
412 activities, please send Bitcoin donations to my address
413 &lt;b&gt;&lt;a href=&quot;bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&quot;&gt;15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&lt;/a&gt;&lt;/b&gt;.&lt;/p&gt;
414 </description>
415 </item>
416
417 <item>
418 <title>geteltorito make CD firmware upgrades a breeze</title>
419 <link>https://people.skolelinux.org/pere/blog/geteltorito_make_CD_firmware_upgrades_a_breeze.html</link>
420 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/geteltorito_make_CD_firmware_upgrades_a_breeze.html</guid>
421 <pubDate>Wed, 20 Apr 2022 11:50:00 +0200</pubDate>
422 <description>&lt;p&gt;Recently I wanted to upgrade the firmware of my thinkpad, and
423 located the firmware download page from Lenovo (which annoyingly do
424 not allow access via Tor, forcing me to hand them more personal
425 information that I would like). The
426 &lt;a href=&quot;https://support.lenovo.com/no/en/search?query=thinkpad firmware bios upgrade iso&amp;SearchType=Customer search&amp;searchLocation=Masthead&quot;&gt;download
427 from Lenovo&lt;/a&gt; is a bootable ISO image, which is a bit of a problem
428 when all I got available is a USB memory stick. I tried booting the
429 ISO as a USB stick, but this did not work. But genisoimage came to
430 the rescue.&lt;/p&gt;
431
432 &lt;P&gt;The geteltorito program in
433 &lt;a href=&quot;http://tracker.debian.org/cdrkit&quot;&gt;the genisoimage binary
434 package&lt;/a&gt; is able to convert the bootable ISO image to a bootable
435 USB stick using a simple command line recipe, which I then can write
436 to the most recently inserted USB stick:&lt;/p&gt;
437
438 &lt;blockquote&gt;&lt;pre&gt;
439 geteltorito -o usbstick.img lenovo-firmware.iso
440 sudo dd bs=10M if=usbstick.img of=$(ls -tr /dev/sd?|tail -1)
441 &lt;/pre&gt;&lt;/blockquote&gt;
442
443 &lt;p&gt;This USB stick booted the firmware upgrader just fine, and in a few
444 minutes my machine had the latest and greatest BIOS firmware in place.&lt;/p&gt;
445 </description>
446 </item>
447
448 <item>
449 <title>Playing and encoding AV1 in Debian Bullseye</title>
450 <link>https://people.skolelinux.org/pere/blog/Playing_and_encoding_AV1_in_Debian_Bullseye.html</link>
451 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Playing_and_encoding_AV1_in_Debian_Bullseye.html</guid>
452 <pubDate>Sat, 16 Apr 2022 08:40:00 +0200</pubDate>
453 <description>&lt;p&gt;Inspired by the recent news of
454 &lt;a href=&quot;https://slashdot.org/story/22/04/03/2039219/intel-beats-amd-and-nvidia-with-arc-gpus-full-av1-support&quot;&gt;AV1
455 hardware encoding support from Intel&lt;/a&gt;, I decided to look into
456 the state of AV1 on Linux today. AV1 is a
457 &lt;a href=&quot;https://web.archive.org/web/20160618103850/http://www.digistan.org/open-standard:definition&quot;&gt;free
458 and open standard&lt;/a&gt; as defined by Digistan without any royalty
459 payment requirement, unlike its much used competitor encoding
460 H.264. While looking, I came across an 5 year
461 &lt;a href=&quot;https://askubuntu.com/questions/1061908/how-to-encode-and-playback-video-with-the-av1-codec-on-bionic-beaver-18-04&quot;&gt;old
462 question on askubuntu.com&lt;/a&gt; which in turn inspired me to check out
463 how things are in Debian Stable regarding AV1. The test file listed
464 in the question (askubuntu_test_aom.mp4) did not exist any more, so I
465 tracked down a different set of test files on
466 &lt;a href=&quot;https://av1.webmfiles.org/&quot;&gt;av1.webmfiles.org&lt;/a&gt; to test them
467 with the various video tools I had installed on my machine. I was
468 happy to discover that AV1 decoding and playback worked with almost
469 every tool I tested:
470
471 &lt;table align=&quot;center&quot;&gt;
472 &lt;tr&gt;&lt;td&gt;mediainfo&lt;/td&gt; &lt;td&gt;ok&lt;/td&gt;&lt;/tr&gt;
473 &lt;tr&gt;&lt;td&gt;dragonplayer&lt;/td&gt; &lt;td&gt;ok&lt;/td&gt;&lt;/tr&gt;
474 &lt;tr&gt;&lt;td&gt;ffmpeg / ffplay&lt;/td&gt; &lt;td&gt;ok&lt;/td&gt;&lt;/tr&gt;
475 &lt;tr&gt;&lt;td&gt;gnome-mplayer&lt;/td&gt; &lt;td&gt;fail&lt;/td&gt;&lt;/tr&gt;
476 &lt;tr&gt;&lt;td&gt;mplayer&lt;/td&gt; &lt;td&gt;ok&lt;/td&gt;&lt;/tr&gt;
477 &lt;tr&gt;&lt;td&gt;mpv&lt;/td&gt; &lt;td&gt;ok&lt;/td&gt;&lt;/tr&gt;
478 &lt;tr&gt;&lt;td&gt;parole&lt;/td&gt; &lt;td&gt;ok&lt;/td&gt;&lt;/tr&gt;
479 &lt;tr&gt;&lt;td&gt;vlc&lt;/td&gt; &lt;td&gt;ok&lt;/td&gt;&lt;/tr&gt;
480 &lt;tr&gt;&lt;td&gt;firefox&lt;/td&gt; &lt;td&gt;ok&lt;/td&gt;&lt;/tr&gt;
481 &lt;tr&gt;&lt;td&gt;chromium&lt;/td&gt; &lt;td&gt;ok&lt;/td&gt;&lt;/tr&gt;
482 &lt;/table&gt;
483
484 &lt;p&gt;AV1 encoding is available in Debian Stable from the aom-tools
485 version 1.0.0.errata1-3 package, using the aomenc tool. The encoding
486 using the package in Debian Stable is quite slow, with the frame rate
487 for my 10 second test video at around 0.25 fps. My 10 second video
488 test took 16 minutes and 11 seconds on my test machine.&lt;/p&gt;
489
490 &lt;p&gt;I tested by first running ffmpeg and then aomenc using the recipe
491 provided by the askubuntu recipe above. I had to remove the
492 &#39;--row-mt=1&#39; option, as it was not supported in my 1.0.0 version. The
493 encoding only used a single thread, according to &lt;tt&gt;top&lt;/tt&gt;.&lt;/p&gt;
494
495 &lt;blockquote&gt;&lt;pre&gt;
496 ffmpeg -i some-old-video.ogv -t 10 -pix_fmt yuv420p video.y4m
497 aomenc --fps=24/1 -u 0 --codec=av1 --target-bitrate=1000 \
498 --lag-in-frames=25 --auto-alt-ref=1 -t 24 --cpu-used=8 \
499 --tile-columns=2 --tile-rows=2 -o output.webm video.y4m
500 &lt;/pre&gt;&lt;/blockquote&gt;
501
502 &lt;p&gt;As version 1.0.0 currently have several
503 &lt;a href=&quot;https://security-tracker.debian.org/tracker/source-package/aom&quot;&gt;unsolved
504 security issues in Debian Stable&lt;/a&gt;, and to see if the recent
505 backport &lt;a href=&quot;https://tracker.debian.org/pkg/aom&quot;&gt;provided in
506 Debian&lt;/a&gt; is any quicker, I ran &lt;tt&gt;apt -t bullseye-backports install
507 aom-tools&lt;/tt&gt; to fetch the backported version and re-encoded the
508 video using the latest version. This time the &#39;--row-mt=1&#39; option
509 worked, and the encoding was done in 46 seconds with a frame rate of
510 around 5.22 fps. This time it seem to be using all my four cores to
511 encode. Encoding speed is still too low for streaming and real time,
512 which would require frame rates above 25 fps, but might be good enough
513 for offline encoding.&lt;/p&gt;
514
515 &lt;p&gt;I am very happy to see AV1 playback working so well with the
516 default tools in Debian Stable. I hope the encoding situation improve
517 too, allowing even a slow old computer like my 10 year old laptop to
518 be used for encoding.&lt;/p&gt;
519
520 &lt;p&gt;As usual, if you use Bitcoin and want to show your support of my
521 activities, please send Bitcoin donations to my address
522 &lt;b&gt;&lt;a href=&quot;bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&quot;&gt;15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&lt;/a&gt;&lt;/b&gt;.&lt;/p&gt;
523 </description>
524 </item>
525
526 <item>
527 <title>Få en slutt på Digitale utslipp</title>
528 <link>https://people.skolelinux.org/pere/blog/F__en_slutt_p__Digitale_utslipp.html</link>
529 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/F__en_slutt_p__Digitale_utslipp.html</guid>
530 <pubDate>Mon, 14 Mar 2022 22:00:00 +0100</pubDate>
531 <description>&lt;p&gt;På onsdag sendte jeg følgende epost til Utdanningsetaten i Oslo
532 kommune (UDE). Fikk beskjed om at min henvendelse har saksnummer
533 22/7559-1 i den
534 &lt;a href=&quot;https://www.oslo.kommune.no/etater-foretak-og-ombud/utdanningsetaten/postjournal-utdanningsetaten/&quot;&gt;offentlige
535 postjournalen til UDE&lt;/a&gt;. Jeg er spent på hva slags respons jeg får.
536 Mistenker jo de fleste som sprer sine nettsideleseres
537 personopplysninger til utlandet ikke har tenkt så nøye igjennom hva de
538 gjør, og at det er håp om at de tenker seg litt nøyere om hvis de blir
539 klar over problemstillingen. Vet du noen som burde få tilsvarede
540 beskjed og spørsmål? Kanskje du kan sende dem en epost. Hvis alle
541 bidrar blir det kanskje litt bedre.&lt;/p&gt;
542
543 &lt;blockquote&gt;
544 &lt;p&gt;To: postmottak (at) osloskolen.no
545 &lt;br&gt;Subject: Digitale utslipp fra osloskolens nettsider&lt;/p&gt;
546
547 &lt;p&gt;Hei.&lt;/p&gt;
548
549 &lt;p&gt;Jeg ser at osloskolens nettsider har digitale utslipp av
550 personopplysninger til Google, Facebook og andre, blant annet omtalt
551&amp;lt;URL: &lt;a href=&quot;https://aktuelt.osloskolen.no/personvernerklaring-for-osloskolen/informasjonskapsler/&quot;&gt;https://aktuelt.osloskolen.no/personvernerklaring-for-osloskolen/informasjonskapsler/&lt;/a&gt;
552 &gt;.&lt;/p&gt;
553
554 &lt;p&gt;&amp;lt;URL: &lt;a href=&quot;https://webbkoll.dataskydd.net/&quot;&gt;https://webbkoll.dataskydd.net/&lt;/a&gt; &gt; kan være et nyttig verktøy for å holde øye med utslippsomfanget på ulike sider.&lt;/p&gt;
555
556 &lt;p&gt;Kanskje det er en ide å gjøre noe med det, jamfør &amp;lt;URL: &lt;a href=&quot;https://www.digi.no/artikler/debatt-det-enkleste-tiltaket-er-a-skru-av-google-analytics/517378&quot;&gt;https://www.digi.no/artikler/debatt-det-enkleste-tiltaket-er-a-skru-av-google-analytics/517378&lt;/a&gt; &gt;?&lt;/p&gt;
557
558 &lt;p&gt;Et alternativ til Google Analytics kan være en lokalt installert
559 utgave av &amp;lt;URL:
560 &lt;a href=&quot;https://matomo.org/&quot;&gt;https://matomo.org/&lt;/a&gt; &gt;. Den og flere
561 andre alternativer kan finnes via
562 &amp;lt;URL: &lt;a href=&quot;https://www.digi.no/artikler/sverige-vil-skrote-amerikansk-skytjeneste-her-er-alternativene/516223?key=5QsV0wRG&quot;&gt;https://www.digi.no/artikler/sverige-vil-skrote-amerikansk-skytjeneste-her-er-alternativene/516223?key=5QsV0wRG&lt;/a&gt; &gt;
563 på bakgrunn av at svenske myndigheter har innsett at dagens praksis
564 nok er både lite lur og ulovlig. Der henger Norge litt etter, men
565 osloskolen har her mulighet til å være litt i forkant. :)&lt;/p&gt;
566
567 &lt;p&gt;Fint om dere kan gi beskjed hvilket saksnummer denne henvendelsen får i
568 offentlig postjournal når den er mottatt.&lt;/p&gt;
569
570 &lt;/blockquote&gt;
571
572 &lt;/p&gt;Flere og flere innser at slik spredning av personopplysninger er
573 ugreit. Det har pågått i mange år. Ser jeg blogget
574 &lt;a href=&quot;https://people.skolelinux.org/pere/blog/Det_er_jo_makta_som_er_mest_s_rbar_ved_massiv_overv_kning_av_Internett.html&quot;&gt;første
575 gang om Google Analytics i 2013&lt;/a&gt; og
576 &lt;a href=&quot;https://people.skolelinux.org/pere/blog/Snurpenot_overv_kning_av_sensitiv_personinformasjon.html&quot;&gt;analyserte
577 omfanget i 2015&lt;/a&gt;, men det er et langt lerret å bleke.&lt;/p&gt;
578
579 &lt;p&gt;Som vanlig, hvis du bruker Bitcoin og ønsker å vise din støtte til
580 det jeg driver med, setter jeg pris på om du sender Bitcoin-donasjoner
581 til min adresse
582 &lt;b&gt;&lt;a href=&quot;bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&quot;&gt;15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&lt;/a&gt;&lt;/b&gt;.
583 Merk, betaling med bitcoin er ikke anonymt. :)&lt;/p&gt;
584 </description>
585 </item>
586
587 <item>
588 <title>Publish Hargassner wood chip boiler state to MQTT</title>
589 <link>https://people.skolelinux.org/pere/blog/Publish_Hargassner_wood_chip_boiler_state_to_MQTT.html</link>
590 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Publish_Hargassner_wood_chip_boiler_state_to_MQTT.html</guid>
591 <pubDate>Sat, 12 Mar 2022 06:30:00 +0100</pubDate>
592 <description>&lt;p&gt;Recently I had a look at a
593 &lt;a href=&quot;https://www.hargassner.at/&quot;&gt;Hargassner&lt;/a&gt;
594 &lt;a href=&quot;https://www.hargassner.at/en/products/wood-chip-boiler.html&quot;&gt;wood
595 chip boiler&lt;/a&gt;, and what kind of free software can be used to monitor
596 and control it. The boiler can be connected to some cloud service via
597 what the producer call an Internet Gateway, which seem to be a
598 computer connecting to the boiler and passing the information gathered
599 to the cloud. I discovered the boiler controller got an IP address on
600 the local network and listen on TCP port 23 to provide status
601 information as a text line of numbers. It also provide a HTTP server
602 listening on port 80, but I have not yet figured out what it can do
603 beside return an error code.&lt;/p&gt;
604
605 &lt;p&gt;If I am to believe various free software implementations talking to
606 such boiler, the interpretation of the line of numbers differ between
607 type of boiler and software version on the boiler. By comparing the
608 list of numbers on the front panel of the boiler with the numbers
609 returned via TCP, I have been able to figure out several of the
610 numbers, but there are a lot left to understand. I&#39;ve located several
611 temperature measurements and hours running values, as well as oxygen
612 measurements and counters.&lt;/p&gt;
613
614 I decided to write a simple parser in Python for the values I figured
615 out so far, and a simple MQTT injector publishing both the interpreted
616 and the unknown values on a MQTT bus to make collecting and graphing
617 simpler. The end result is available from the
618 &lt;a href=&quot;https://gitlab.com/petterreinholdtsen/hargassner2mqtt&quot;&gt;hargassner2mqtt
619 project page&lt;/a&gt; on gitlab. I very much welcome patches extending the
620 parser to understand more values, boiler types and software versions.
621 I do not really expect very few free software developers got their
622 hands on such unit to experiment, but it would be fun if others too find
623 this project useful.&lt;/p&gt;
624
625 &lt;p&gt;As usual, if you use Bitcoin and want to show your support of my
626 activities, please send Bitcoin donations to my address
627 &lt;b&gt;&lt;a href=&quot;bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&quot;&gt;15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&lt;/a&gt;&lt;/b&gt;.&lt;/p&gt;
628 </description>
629 </item>
630
631 <item>
632 <title>Run your industrial metal working machine using Debian?</title>
633 <link>https://people.skolelinux.org/pere/blog/Run_your_industrial_metal_working_machine_using_Debian_.html</link>
634 <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Run_your_industrial_metal_working_machine_using_Debian_.html</guid>
635 <pubDate>Wed, 2 Mar 2022 18:40:00 +0100</pubDate>
636 <description>&lt;p&gt;After many months of hard work by the good people involved in
637 &lt;a href=&quot;https://en.wikipedia.org/wiki/LinuxCNC&quot;&gt;LinuxCNC&lt;/a&gt;, the
638 system was accepted Sunday
639 &lt;a href=&quot;https://tracker.debian.org/pkg/linuxcnc&quot;&gt;into Debian&lt;/a&gt;.
640 Once it was available from Debian, I was surprised to discover from
641 &lt;a href=&quot;https://qa.debian.org/popcon.php?package=linuxcnc&quot;&gt;its
642 popularity-contest numbers&lt;/a&gt; that people have been reporting its use
643 since 2012. &lt;a href=&quot;http://linuxcnc.org/&quot;&gt;Its project site&lt;/a&gt; might
644 be a good place to check out, but sadly is not working when visiting
645 via Tor.&lt;/p&gt;
646
647 &lt;p&gt;But what is LinuxCNC, you are probably wondering? Perhaps a
648 Wikipedia quote is in place?&lt;/p&gt;
649
650 &lt;blockquote&gt;
651 &quot;LinuxCNC is a software system for numerical control of
652 machines such as milling machines, lathes, plasma cutters, routers,
653 cutting machines, robots and hexapods. It can control up to 9 axes or
654 joints of a CNC machine using G-code (RS-274NGC) as input. It has
655 several GUIs suited to specific kinds of usage (touch screen,
656 interactive development).&quot;
657 &lt;/blockquote&gt;
658
659 &lt;p&gt;It can even control 3D printers. And even though the Wikipedia
660 page indicate that it can only work with hard real time kernel
661 features, it can also work with the user space soft real time features
662 provided by the Debian kernel.
663 &lt;a href=&quot;https://github.com/linuxcnc/linuxcnc&quot;&gt;The source code&lt;/a&gt; is
664 available from Github. The last few months I&#39;ve been involved in the
665 translation setup for the program and documentation. Translators are
666 most welcome to
667 &lt;a href=&quot;https://hosted.weblate.org/engage/linuxcnc/&quot;&gt;join the
668 effort&lt;/a&gt; using Weblate.&lt;/p&gt;
669
670 &lt;p&gt;As usual, if you use Bitcoin and want to show your support of my
671 activities, please send Bitcoin donations to my address
672 &lt;b&gt;&lt;a href=&quot;bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&quot;&gt;15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b&lt;/a&gt;&lt;/b&gt;.&lt;/p&gt;
673 </description>
674 </item>
675
676 </channel>
677 </rss>