srcpd.conf(5)
๐ธ srcpd.conf ๐ธ
okay bestie, welcome to srcpd.conf(5) โ that's the File Formats Manual section, so you know this is the real deal. it's the config file for the srcpd daemon and we're gonna go through every single thing in it, no skips, no "eh you'll figure it out". grab a snack. ๐
โจ NAME โจ
srcpd.conf โ the configuration file for the srcpd daemon. that's it, that's the name, she's simple and she's iconic. ๐
๐ฆ DESCRIPTION ๐ฆ
so the file /etc/srcpd.conf is what srcpd (8) reads. it holds the runtime configuration for the daemon and its connection(s) to your model railroad system. if you wanna know how to actually run the daemon, go read srcpd (8), because this page is about the file, not the vibes of launching it. ๐
๐ DEFAULT CONFIGURATION FILE ๐
the default file ships right along with srcpd and it's giving both default settings and an example bus configuration. look at her:
<?xml version="1.0"?>
<srcpd version="2.0">
<bus>
<server>
<tcp-port>4303</tcp-port>
<pid-file>/var/run/srcpd.pid</pid-file>
<username>nobody</username>
<groupname>nogroup</groupname>
</server>
<verbosity>5</verbosity>
</bus>
<bus>
<loopback>
<number_fb>3</number_fb>
</loopback>
<use_watchdog>no</use_watchdog>
<verbosity>5</verbosity>
<auto_power_on>yes</auto_power_on>
</bus>
</srcpd>
like. she's cute. she's functional. we love her. ๐
๐ FILE FORMAT ๐
the config lives in XML format, periodt. and because XML is just plain text, experienced users can absolutely just open it in a text editor and go to town. less experienced users? bestie, please grab an external configuration tool so your file stays syntactically correct, i'm begging. ๐
if errors happen while reading the config file, the daemon sends notifications to the syslog daemon. you can watch those messages using the syslog facility user.info. that facility usually lands in /var/log/messages (or /var/log/syslog). on some systems you might need to edit /etc/syslog.conf to get at the user.info facility:
user.info /var/adm/user-info.log
heads up: currently there is no document type definition (DTD) available to validate the format of a user created configuration file. so no safety net, bestie, you're on your own. ๐ญ
every config file has to provide this base structure:
<?xml version="1.0"?>
<srcpd>
...
</srcpd>
inside that structure (...) you configure the buses you need, each one in its own separate substructure:
<bus>
...
</bus>
<bus>
...
</bus>
๐ง General hints ๐ง
the first configured bus should always be the server-bus. after that? sequence and number of the following buses are whatever you want, any desired, go off. โจ
numbering of each single bus follows the sequence in this configuration file. the server bus itself gets number 0, and all following buses get numbered continuously starting with 1 up to a maximum limit of 20.
only file the buses you're actually using with the daemon. not using a bus? comment it out, queen:
<!--
<bus>
...
</bus>
-->
careful though!! if you comment a bus out, the numbering of the following buses will change accordingly. don't say i didn't warn you. ๐
๐ Universal options ๐
these options work for all used bus sections. and important: universal options must be specified after the bus specific options. order matters, bestie, don't fight it. ๐ซถ
verbosityโ depending on this number (valid range:0..5) the bus tells you less or more about what's happening. the0value gives a minimum output. this option is mainly used for debugging reasons. you can watch these messages using the syslog daemon file/var/log/messages(or/var/log/messages); seesrcpd(8)for more info. the default value is4.use_watchdogโ some buses provide a watchdog feature to cancel a blocked bus thread. valid input values areyesorno. the default value isno.restore_device_settingsโ some buses provide a feature to restore serial device settings. valid input values areyesorno. the default value isno.deviceโ this is the name of the connected device (like/dev/ttyS0). if the bus is server or loopback, no assignment is necessary. the default value is/dev/null.auto_power_onโ this option enables/disables automatical power on for a bus on server daemon start. this option is not necessary for server and loopback buses. the default value isno.speedโ buses using serial devices with a not fixed transfer speed allow one to adjust this parameter. possible values are2400,4800,9600,19200,38400,57600and115200baud. for buses with variable interface speed the default value is2400.
๐ server ๐
this bus is needed every time, non-negotiable, she's the main character. ๐ these options are here for your individual setup:
tcp-portโ this is the TCP/IP port for communication betweensrcpdand his clients. default is4303(and yes, this port number is assigned to SRCP by IANA, so it's official official).pid-fileโ file wheresrcpdis storing it's process-id. according to FHS the default is/var/run/srcpd.pid.usernameโsrcpdruns under this user. default isnobody.groupnameโsrcpdruns under this group. default isnogroup.
๐ dccar ๐
this driver supports DC-Car Infrared Remote Control. this mode supports remote control of cars (e.g. Faller Car-System) with a DC-Car decoder or Infracar decoder. a sender must be connected to your PC's seriall port. some USB/Serial Adapter also work, e.g. Prolifi PL 2303 based adapter. (yep, adapters are lowkey invited to the party too. ๐ฆ)
a description of the sender is available at http://www.dc-car.de/pc-sender.html
modeโ this option specifies whether DC-Car or Infracar decoders are controlled. currently it is not possible to combine both modes. possile values aredccarandinfracar.number_glโ this value specifies the address range of the used vehicles (GL). up to 1024 DC-Cars or 4096 Infracars can be controlled. default values are1024(dccar) and4096(infracar).pause_between_commandsโ this value specifies the time between two commands. the default value is10ms.
๐ Example
<bus>
<dccar>
<mode>dccar</mode>
<number_gl>1024</number_gl>
<pause_between_commands>10</pause_between_commands>
</dccar>
<auto_power_on>yes</auto_power_on>
<verbosity>4</verbosity>
<device>/dev/ttyUSB0</device>
</bus>
โก ddl โก
Digital Direct for Linux (DDL) via serial line (RS232). with this module the PC is enabled to generate a digital control voltage for Maerklin/Motorola (MM) and/or NMRA/DCC using the serial interface (RS232) hardware. output lines TxD and GND are used by this feature and must be connected to booster inputs properly. no vibes-based wiring, bestie. ๐
this module exposes optimal signal performance if special user rights for the srcpd are applied. it is recommended especially for Maerklin/Motorola users to configure a system user srcpd and a group srcpd with these command lines:
$ addgroup --system srcpd
$ adduser --system --no-create-home --ingroup srcpd srcpd
in order to increase the realtime priority for this user the system file /etc/security/limits.conf must be edited to add following line:
srcpd - rtprio 99
additionally check if the pam_limits parameters in configuration file
/etc/pam.d/su
are activated, so user limits set in /etc/security/limits.conf are effective.
according to these measures the configuration file must be adapted as follows:
<server>
...
<username>srcpd</username>
<groupname>srcpd</groupname>
...
</server>
number_gaโ maximum usable decoder address number for generic accessory devices (GA). the default value is324.
please note that there is an offset of 4 between the DDL addresses and the addresses according to the documentation from maerklin. the equation ddl-address = maerklin docu address + 4 is used. this is due to some interpretation differences what the trits mean. details can be found at http://vogt-it.com/OpenSource/DDL/Addrestable.html
number_glโ maximum usable decoder address number for generic locomotive devices (GL). the default value is81.enable_ringindicator_checkingโ the ring indicator (RI) is a line of the serial interface RS232. this line can be used to switch off digital signal power, e.g. by pushing a connected emergency stop button. signal power is switched off if RI line input voltage changes from-12V(-5V) to+12V(+5V). if this feature is used, the parameter must be set toyes, if not used, it must be set tono. the default value isno.enable_checkshort_checkingโ the DSR line of the serial interface RS232 can be used to switch off digital power as response to shortcut detection. the connected booster must provide support for this kind of feature and must be wired to this line accordingly. if used the parameter must be set toyes, if not used, it must be set tono. the default value isno.inverse_dsr_handlingโ some boosters provide inverted output voltage for shortcut detection. if such a booster is used this parameter must be set toyes. the default value isno.enable_maerklinโ this parameter must be set toyesif decoders for the old (not mfx) Maerklin/Motorola (MM) format are used. if not used, it should be set tono. the default value isyes.enable_nmradccโ this parameter must be set toyesif decoders for NMRA/DCC format are used. if not used, it should be set tono. the default value isyes.
it is also possible to enable both digital protocol formats, to drive decoders of both digital systems attached to the same power line. in order to minimize CPU load, the not used protocol should always be disabled. (your CPU will thank you, she's sensitive. ๐ )
improve_nmradcc_timingโ the default baudrate of DDL is19200baud, which is slightly higher than allowed by NMRA DCC standard. with a UART 16550A you can change the baudrate to16457baud, which is within the specification. this is only needed if you have timing problems with the default. valid input values areyesorno. the default value isno, which corresponds to19200baud.nmra_ga_offsetโ okay so this one is for backward compatibility to erddcd and for when you're using different central units, because bestie there are literally two ways to handle NMRA/DCC decoder addresses ๐ญ. This parameter lets you add an offset to all used address values. E.g., if all GA decoder addresses are shifted by 4 (i.e. you want to change switch 1, and you have to change switch 5 to do this), then this parameter should be set to 1. Valid values are0and1. Default value is0. ๐shortcut_failure_delayโ the number of micro seconds srcpd waits to switch off digital power, after a shortcut is detected. The default value is0. yes that's the whole thing, short and sweet โจnmradcc_translation_routineโ there are 3 implementations for converting the logical command bits into serial line commands, considering the start and stop bits of the serial line. Valid values are1,2and3. Default value is3. ๐enable_usleep_patchโ so due to certain issues of the MM protocol, its usage results in a significant amount of CPU load for srcpd, caused by busy waiting ๐. This parameter gives the possibility to improve this situation by introducing a process wait state for a certain amount of time. Normally this does not result in any trouble controlling the attached decoders, so the parameter should be set toyes. Valid values areyesandno. The default value isyes. ๐ธusleep_usecโ number of micro seconds the signal generating process pauses. This value should be as small as possible; a bigger value can result in improper digital signal generation. There have been good results using values between100and250usecs. This parameter is only used ifenable_usleep_patchis set toyes. The default value is100. ๐ฆprogram_trackโ this parameter allows you to suppress commands which are issued for a program track. This parameter should only be used on your main. Valid input values areyesorno. The default value isyes, i.e. all program track commands will be executed by default. ๐
Example Maerklin/Motorola
<bus>
<ddl>
<number_ga>200</number_ga>
<number_gl>81</number_gl>
<enable_maerklin>yes</enable_maerklin>
<enable_nmradcc>no</enable_nmradcc>
<enable_usleep_patch>yes</enable_usleep_patch>
<usleep_usec>200</usleep_usec>
</ddl>
<auto_power_on>no</auto_power_on>
<verbosity>4</verbosity>
<device>/dev/ttyS0</device>
</bus>
Example NMRA/DCC
<bus>
<ddl>
<number_ga>160</number_ga>
<number_gl>60</number_gl>
<enable_maerklin>no</enable_maerklin>
<enable_nmradcc>yes</enable_nmradcc>
<nmradcc_translation_routine>3</nmradcc_translation_routine>
</ddl>
<auto_power_on>no</auto_power_on>
<verbosity>4</verbosity>
<device>/dev/ttyS0</device>
</bus>
โจ ddl-s88 โจ
Digital Direct for Linux S88 via parport (IEEE 1284). This bus provides up to four S88 data links attached to the parallel port to connect S88-feedback modules. Usage of one S88 line is possible by simply wiring modules to the parallel port connectors; for advanced applications involving more than one line the wiring scheme is equivalent to the one from the DDL daemon erddcd (http://www.vogt-it.com/OpenSource/DDL) as shown in the circuit of Martin Wolf. The four S88 data links are managed as separate buses. ๐
The maximum count of modules (with 16 contacts) which can be connected to a data link is 31; so maximal 496 contacts are supported per link. When using modules with 8 contacts two modules count as one. ๐งฎ
For each data link a separate bus is initialized where the sequence of the feedback contacts of the modules is increasing as the modules are connected to the data link. If there are no modules connected to a data link the respective value of number_fb_x must be set to 0. Nevertheless this bus is initialized, that means also if only one bus is used, all four buses are initialized. โจ
ioportโ input/output address of the printer port. The default value is0x0378. The value forioportmust be given in hexadecimal format (starting with0x). Valid values for a typical Linux system are0x0378,0x0278and0x03BC. The right value can easily be detected searching through the kernel start-up messages:
dmesg | grep parport
clockscaleโ parameter to adjust the clock rate for reading the modules. In the case of the default value35the original S88 clock rate of approximately8 KHzwould be achieved. Smaller values increasing the clock rate but not each module can work with this. In maximum there is approximately125 KHzpossible. ๐ฅrefreshโ delay time in milliseconds after witch the feedback modules are read again. In case of the default value100the data is refreshed each100 ms. The higher this value the less often the attached modules are read and the less is the resulting system load. Useful values are between100and250. ๐fb_delay_time_0โ this value in milliseconds determines how long the signal on a feedback contact must be on zero level before it is accepted as valid and will be forwarded to all clients. With this parameter it is in a limited range possible to debounce bad feedback contacts (bouncing contacts). The default value is0. ๐number_fb_1โ this statement defines the count of feedback modules connected to the data link number 1. 1๏ธโฃnumber_fb_2โ this statement defines the count of to data link number 2 connected feedback modules. 2๏ธโฃnumber_fb_3โ this statement defines the count of to data link number 3 connected feedback modules. 3๏ธโฃnumber_fb_4โ this statement defines the count of to the data link number 4 connected feedback modules. 4๏ธโฃ
Inside of the configuration the common values should be arranged before the bus specific values. ๐
Example
<bus>
<auto_power_on>yes</auto_power_on>
<verbosity>5</verbosity>
<ddl-s88>
<ioport>0x378</ioport>
<number_fb_1>9</number_fb_1>
<number_fb_2>0</number_fb_2>
<number_fb_3>0</number_fb_3>
<number_fb_4>0</number_fb_4>
</ddl-s88>
</bus>
โจ hsi-88 โจ
This driver supports the HSI-88 device from Littfinski connected via serial line. An USB2Serial converter should work fine. The serial line speed setting is fixed to 9600 baud and cannot be changed. ๐ค
The HSI-88 device provides three lines for feedback modules. To each line a maximum of 31 modules (each with 16 inputs) can be attached. If modules with 8 inputs are used, two modules count as one. ๐ง
number_fb_leftโ this value is the number of feedback-modules (with 16 inputs) connected to the line calledleft. โฌ ๏ธnumber_fb_centerโ this value is number of feedback-modules (with 16 inputs) connected to the line calledcenter. โบ๏ธnumber_fb_rightโ this value is number of feedback-modules (with 16 inputs) connected to the line calledright. โก๏ธfb_delay_time_0โ this is the time in milliseconds a feedback input must be zero, before zero is delivered to the attaches SRCP clients. With this feature it is possible to compensate bad feedback bounces in a certain range. The default value is0. ๐ธrefreshโ the time in microseconds (us) after srcpd will read feedback again from HSI-88. The default value is10000us. The lower this value the higher the resulting CPU load. ๐
Example
<bus>
<hsi-88>
<number_fb_left>8</number_fb_left>
<number_fb_center>5</number_fb_center>
<number_fb_right>0</number_fb_right>
<refresh>10000</refresh>
</hsi-88>
<auto_power_on>yes</auto_power_on>
<verbosity>4</verbosity>
<device>/dev/ttyS0</device>
</bus>
โจ i2c-dev โจ
Bus driver for i2c-dev interface of the Linux kernel, can be used to access hardware found on http://www.matronix.de/. ๐
multiplex_busesโTODO๐ga_hardware_invertersโTODO๐ga_reset_deviceโTODO๐
โจ intellibox โจ
This driver supports the Intellibox device from Uhlenbrock (IB) connected via the serial port. Only extended mode commands are used (P50X binary protocol); this should be taken into account if protocol compatible devices (e.g. OpenDCC, DiCoStation, EasyControl) are used. Programming decoders is currently implemented for DCC only. Possible values for speed of serial port are depending from device and interface type 2400 baud, 4800 baud, 9600 baud, 19200 baud, 38400 bau and 57600 baud. ๐
fb_delay_time_0โ this is the time in milliseconds a feedback input must be zero, before this value is delivered to clients. With this feature you can compensate bad feedback in a specific range. The default value is0 ms. ๐pause_between_commandsโ this is the time in milliseconds between two commands the driver must wait. The exact value should be hand tuned. If the system does not respond or drops commands try to increase this value. Default is250 ms. โฑ๏ธnumber_gaโ this is the maximal address number of Generic Accessory decoders (GA). Supported range is0..1024. A value of0means no GA available. Default is256. ๐number_glโ like the number of GA this number limits the maximum address of the Generic Locomotive decoders (GL). Supported range is0..10239. A value of0means no GL available. Default is80. ๐number_fbโ this is the number of S88 modules attached to the Intellibox device. The maximum valid number is31. The default is0(no modules are attached). Please note that Loconet is currently not supported. ๐ญauto_speed_detectionโ flip this on and srcpd runs an automatical baudrate detection on the Intellibox it's plugged into (that's BABI bestie โ Break and Automatic Baud-rate Identification ๐ ). It eats a couple of seconds, but the payoff is chef's kiss: you don't have to hand it aspeedvalue at all. Turn it off and the connection initialization is much faster, but then thespeedyou gave it must line up with what your Intellibox is actually set to, no cap. Valid values areyesandno. Default value isyes. ๐ซถ
Example ๐
<bus>
<intellibox>
<number_ga>250</number_ga>
<number_gl>100</number_gl>
<number_fb>4</number_fb>
<fb_delay_time_0>0</fb_delay_time_0>
<pause_between_commands>0</pause_between_commands>
</intellibox>
<speed>19200</speed>
<auto_speed_detection>no</auto_speed_detection>
<auto_power_on>no</auto_power_on>
<verbosity>4</verbosity>
<device>/dev/ttyUSB0</device>
</bus>
๐ซ li100, li100usb ๐ซ
This driver is the one that talks to the LI100, LI100F, LI101F or LI-USB devices from Lenz over the serial port / USB interface. Real talk: an USB2Serial converter should not be used here ๐. The serial line settings depend on which type of interface you've got. For LI-USB it's locked to 57600 baud with no chance to change it. Autodetection of the serial port interface speed is currently under construction ๐ง. If the connection fails, just try restarting srcpd with a different speed. Possible values are 9600 baud, 19200 baud, 38400 baud, 57600 baud and 115200 baud, depending on your interface.
fb_delay_time_0โ the time in milliseconds that a feedback input has to sit at zero before that value actually gets delivered to clients. Use it to paper over bad feedback in a specific range. Default value is0ms.number_gaโ the number of GA. Supported range is0..1024. A value of0means no GA available. Default is99(for LI-USB it's9999).number_glโ same energy as number of GA, except this one gives the maximum address. Supported range is0..9999. A value of0means no GL available. Default is99(for LI-USB it's9999).number_fbโ the number of RS modules attached to the Lenz device. It can be as large as512. It's assumed that one module has8inputs. A value of0means no FB available. Default is256(for LI-USB it's512).
For Lenz USB interfaces it is very important to have the kernel module ftdi_sio available. And because of the Lenz concept, the interface unit hands back different values after start ๐:
0โ everything is OK โจ-1โ Central Unit not found. Unable to read version of central unit.-2โ Central Unit not found. Unable to read version of central unit.-3โ Interface not found. Unable to read version of interface. This can also happen, if no central unit is connected to interface.-4โ device not found
๐ loconet ๐
This bus gives you a driver for the Loconet system by Digitrax. The device settings can be either serial connections (e.g. MS100, LocoBuffer) or TCP/IP network links (e.g. LbServer, http://loconetovertcp.sourceforge.net/). Pick your fighter ๐
sync-time-from-loconetโ decode time messages from the loconet and set the SRCP TIME device. Valid values areyesorno. Default isno.loconet-idโ Default is0x50.ms100โ support for theMS100/RS232device of Digitrax. Valid values areyesandno. Default isno.
Example ๐
<bus>
<loconet>
<loconet-id>80</loconet-id>
<sync-time-from-loconet>no</sync-time-from-loconet>
<ms100>no</ms100>
</loconet>
<device type="network" port="1234">127.0.0.1</device>
<!--
<device type="file">/dev/ttyS0</device>
-->
</bus>
๐ loopback ๐
Okay so this bus connects to absolutely no real hardware ๐ฆ. It's mainly a development-tasks girly but honestly it can be useful for real installations too. Every command on this bus only has an echo effect on the INFO sessions. You can also use it as a virtual device for communication tasks. It's giving sandbox โจ
number_gaโ the maximal address number of Generic Accessory (GA) devices. Default is256.number_glโ this number gives the maximum valid address number of the Generic Locomotive (GL) devices. Default is80.number_fbโ different to other buses, this parameter takes the number of feedback contacts, not modules. So simulating two feedback modules, each providing16contacts, needs a parameter value of32. Default is0(no contact).
Example ๐ธ
<bus>
<loopback>
<number_ga>120</number_fb>
<number_gl>100</number_fb>
<number_fb>64</number_fb>
</loopback>
<verbosity>2</verbosity>
<auto_power_on>no</auto_power_on>
</bus>
๐ m605x ๐
This supports communication with the 6051 or 6050 devices from Maerklin connected via the serial port. An USB2Serial converter should work fine here (unlike some other buses, iykyk). The serial line settings are fixed to 2400 baud 8N2 and cannot be changed, periodt.
m6020modeโ in this mode the srcpd does not sent the 4 functions. This is a feature of the6021only. Valid values areyesandno. Default value isno.fb_delay_time_0โ this is the time the driver code waits until it recognized the input change, in milliseconds. This feature may support a debounce found in the hardware. The default value is0ms.ga_min_activetimeโ the time in milliseconds a GA device needs to be in active state. The absolute minimum is75ms and is needed for stable communication with the6051. The default value is75ms.pause_between_commandsโ the time between two commands the drivers must wait. The exact values should be hand tuned. If the system does not respond or drops commands, try to increase this value. Default is200ms.pause_between_bytesโ the time the driver waits between 2 bytes in multi-byte commands. The hardware handshake does not work with all devices, so this parameter was introduced to support it. The default is2ms.number_gaโ the number of GA. This parameter does not have a real effect since the interface supports the addresses1..256only. Keep the default value256untouched.number_glโ like the number of GA, this number gives the maximum GL address. Since this number is limited to80, keep the default value80untouched.number_fbโ the number of6088modules attached to the6051/6050device. The valid range is from0..31. The default value is0(no modules are attached). Please note that6088modules attached to other devices (memory) cannot be accessed.
Example ๐
<bus>
<m605x>
<number_ga>120</number_fb>
<number_gl>60</number_fb>
<number_fb>8</number_fb>
<ga_min_activetime>150</ga_min_activetime>
<pause_between_bytes>2</pause_between_bytes>
<pause_between_commands>50</pause_between_commands>
</m605x>
<auto_power_on>no</auto_power_on>
<verbosity>4</verbosity>
<device>/dev/ttyS0</device>
</bus>
๐๏ธ selectrix ๐๏ธ
Selectrix CC-2000 and Rautenhaus SLX852. That's it, that's the description bestie ๐ญ
number_gaโ TODOnumber_glโ TODOnumber_fbโ TODOcontrollerโ TODO
๐ zimo ๐
This bus provides support for the old ASCII based Zimo MX1 interface protocol. The baud rate can not be changed and has an internal preset of 9600 Baud. Locked in, no notes ๐
number_gaโ this value sets the maximum number for the GA address range. For protocolM(Maerklin/Motorola) the upper limit is63, for protocolN(NMRA/DCC) the upper limit is2044(according to Lenz-DCC address scheme). TheZ(Zimo) protocol is not supported yet. The default value is256.number_glโ this value sets the maximum number for the GL address range. The default value is80.number_fbโ Not supported. The default value is0.fb_delay_time_0โ Not supported.
๐ FILES ๐
/etc/srcpd.conf
๐ SEE ALSO ๐
srcpd(8)
๐ AUTHORS ๐
This man page was written by Matthias Trute (mtrute@users.sourceforge.net), Frank Schmischke (schmischi@users.sourceforge.net) and Guido Scholz (gscholz@users.sourceforge.net). Legends only, fr fr ๐ซถ๐
And that's the whole page bestie!! ๐ This one's from the srcpd.conf(5) manual, dated December 19, 2009 โ go build something iconic with it โจ๐ธ๐
๐ฆ where this page comes from
- debian trixie: srcpd 2.1.7-2
- epel 10: srcpd 2.1.7-3.el10_0 ยท GPL-2.0-only
- epel 9: srcpd 2.1.7-1.el9 ยท GPLv2
- fedora 43: srcpd 2.1.7-5.fc43 ยท GPL-2.0-only
- fedora 44: srcpd 2.1.7-6.fc44 ยท GPL-2.0-only
- ubuntu questing: srcpd 2.1.7-2build1
- ubuntu resolute: srcpd 2.1.7-2build2
- ubuntu stonking: srcpd 2.1.7-2build2
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms