1 # Function for the target image
3 menu "5. Firmerware functions"
6 prompt "Primary firmware function"
7 default MAINFUNCTION_SIP_PHONE
9 source "src/function/Kconfig.devel"
11 config MAINFUNCTION_SIP_PHONE
12 bool "SIP phone over IPv6"
14 This is the customary primary function for the 0cpm firmerware.
15 It implements SIP phone functionality over IPv6. Included are
16 facilities to obtain IPv6 connectivity on all networks.
19 config MAINFUNCTION_SIP_DOORBELL
20 bool "SIP doorbell over IPv6"
22 This is an alternative primary function for the 0cpm firmerware.
23 It implements a doorbell that is switched off until a button
24 is pressed. As soon as the device boots, it will dial out to
25 a predefined number on a predefined server.
27 This is not quite the same as a phone configured as a hotline.
28 Such a phone would always be switched on, even though normal
29 use would not include calling to the device. So, to save
30 energy, the doorbell application assumes that a phone is
31 switched off when not in use. The device will keep itself
32 switched on until it is done with its task.
35 config MAINFUNCTION_SIP_ALARMCLOCK
36 bool "SIP alarm clock over IPv6"
38 This is an alternate primary function for the 0cpm firmerware.
39 It implements an alarm clock that does not ring the phone,
40 but rather picks up immediately and plays whatever sound
41 is sent to it. It is imagined that a network service would
42 wake up all those souls who have a hard time hearing a
46 To further implement the logic of an alarm clock, use of the
47 hook contact will make it speak out the current time. There
48 is a facility for a button that will set the alarm to go a
49 predefined number of hours after it was pressed. You might
50 go as far as to wire that to your bed!
53 config MAINFUNCTION_BOOTLOADER
55 select FUNCTION_NETCONSOLE
56 select FUNCTION_FIRMWARE_UPGRADES
58 Some phones have less RAM than Flash on board. On such phones,
59 stability improves with the installation of a small bootloader
60 that is smaller than RAM. More in general, it helps to upgrade
61 the firmerware under tight local control.
63 The bootloader is initiated after a power cycle if (and as long as)
64 the horn is off-hook. This is not usually the case, so normally
65 the bootloader is skipped quickly.
67 While the bootloader is active, all nonvolatile partitions are
68 made available over TFTP for reading and writing. To aid in
69 automation, ...TODO...
71 The bootloader does not run over IPv6 or even IPv4; it is only
72 routed locally because it runs as a TFTP server directly on top
73 of 802.2 Ethernet (LLC type 1). You will need a special TFTP
74 client to be able to access the bootloader.
76 Note that the bootloader code itself can also be replaced by
77 the bootloader. Be very careful when doing that, as there
78 will be no warning for quite a few mistakes you could make.
82 config FUNCTION_SOUND_PLAYER
83 bool "Networked sound player device"
85 Configure the phone as a networked sound device. This enables
86 computers on the LAN to send sound to the phone to have it played.
87 This is only supported on an IPv6-enabled LAN.
89 The protocol to use is RTP/L16, which is a standard audio/video
90 codec intended for uncompressed sample data, just like you
91 would offer to a local sound card.
93 You can send such RTP Multicast streams with PulseAudio, using
94 the s16ne or s16be sample format. For information on support of
95 PulseAudio in your software, see http://www.pulseaudio.org/
101 Enable Internet Radio functions. This makes the phone pickup
102 stream announcements, and play one as selected by the user.
103 The radio function works over the speaker, and stop playing
104 during phone calls. The radio volume can be set separately
105 from other volume settings.
107 This function is targeted at business networks, rewarding
108 them for supplying IPv6 Multicast on their LANs. It is only
109 supported on LANs with native IPv6. Any stream with a suitable
110 codec (like RTP/Vorbis) that is multicasted over IPv6/UDP/RTP
111 and announced with SAP can be played back by the phone.
113 You could consider finding a suitable radio station on m6bone,
114 and permitting that infrastructure to get to your LAN. This
115 would only require you to broadcast the channel listing over
116 SAP every now and then.
118 Do not forget to select the codecs used for streaming the
121 TODO - not implemented yet.
123 config FUNCTION_RADIO_CHANNELS
124 int "Maximum number of channels to store"
127 The number of Internet Radio channels that are stored is
128 fixed. You can specify a high enough upper limit to be
131 config FUNCTION_RADIO_L16
132 bool "Internet radio with RTP/L16"
134 depends on FUNCTION_RADIO
136 Support 16-bit linear audio coding over RTP. This is a
137 standard audio/video codec intended for uncompressed
138 exchange of audio. This is a lightweight version of an
139 Internet Radio, that should work well enough on any
140 speaker phone. To feed the stream, you will probably
141 need a decoder near your multicast router. You could
142 setup a gstreamer pipeline for this.
144 TODO - not implemented yet.
146 config FUNCTION_RADIO_VORBIS
147 bool "Internet radio with RTP/Vorbis (read help)"
149 depends on FUNCTION_RADIO
151 Support Vorbis over RTP (not Vorbis in the file format Ogg)
152 as a radio codec. Any such streams announced through SAP
153 will be offered to the phone user, who can select a favourite
154 station and tune into others as they please.
156 Your mileage may vary -- not all phones are powerful enough
157 to decode Vorbis, and in fact some Vorbis streams could be
158 too complex to decode live. Furthermore, this codec may
159 occupy more program memory than available on your phone.
160 You can safely try it, and enjoy it if/when it works.
162 TODO - not implemented yet.
164 config FUNCTION_RADIO_MP3
165 bool "Internet radio with RTP/MP3 (READ HELP)"
167 depends on FUNCTION_RADIO
169 This toggle does not include MP3 support, it is a placeholder
170 to explain why it is NOT SUPPORTED.
172 MP3 is a tightly controlled codec, with patent license costs
173 for every single device. It is problematic to combine patents
174 and expenses with an open source solution. Although we would
175 have liked to support MP3, you should probably resolve matters
176 near your multicast router. More info on MP3 licensing costs
177 can be found on http://mp3licensing.com/royalty/hardware.html
179 What you can do is setup a gstreamer pipeline that decodes MP3
180 and re-encodes as RTP/L16, and multicasts that over IPv6. Note
181 that an MP3 plugin for gstreamer is kindly provided by Fluendo,
182 on http://www.fluendo.com/shop/product/fluendo-mp3-decoder/
184 config FUNCTION_RADIO_AAC
185 bool "Internet radio with RTP/AAC (READ HELP)"
187 depends on FUNCTION_RADIO
189 This toggle does not include AAC support, it is a placeholder
190 to explain why it is NOT SUPPORTED.
192 AAC is a controlled codec, although not as badly as MP3. To
193 avoid breaking the licenses for the codec, they may only be
194 distributed as source code, which seems too restrictive to be
195 worth the effort of adding it. (Somewhat open for discussion.)
197 What you can do is setup a gstreamer pipeline that decodes AAC
198 and re-encodes as RTP/L16, and multicasts that over IPv6. Note
199 that a plugin for gstreamer is made available in the "bad"
200 plugins collection for gstreamer, in a module named faad.
202 config FUNCTION_NETCONSOLE
203 bool "LAN-based console"
206 Direct console traffic for the main application to the network.
208 The protocol used for this network console is Logical Link Control
209 or IEEE 802.2, more to the point LLC2 which is a bit like TCP but
210 directly on top of Ethernet. It is only accessible to directly
211 connected computers on the same LAN, so this is very suitable to
212 release console information to a LAN.
214 This console can be an add-on module for other targets, or it can
215 be selected as a development target to become the main function for
216 the image being built. In that capacity it is a good test for the
219 This facility is normally only of use during development, but may
220 nonetheless be compiled into end-user modules.
222 config FUNCTION_FIRMWARE_UPGRADES
223 bool "Support firmware upgrades"
224 default y if MAINFUNCTION_BOOTLOADER=y
226 It is possible, though not strictly required, to support
227 the download and installation of new firmware. As normal
228 IP addresses are used, this is not as safe as the upgrades
229 that are included in the dedicated bootloader main function.
230 TODO: Also use TFTP over LLC1?
232 If the upgrade fails, the phone will need to be upgraded
233 through the bootloader, if it has one.
235 Do not select this option without considering its implications.
237 config FUNCTION_FIRMWARE_UPGRADES_BOOTLOADER
238 bool "Support bootloader upgrades (DANGEROUS)"
239 depends on FUNCTION_FIRMWARE_UPGRADES
242 This is a dangerous facility!
244 Complete remote control over a phone is only possible if all
245 firmware, including even its bootloader, can be upgraded from
246 a remote site. This option enables that facility.
248 Note that this facility makes the phone rather vulnerable.
249 Anyone with access to the phone's TFTP service will be able
250 to upload new firmware to replace it. You do want to have a
251 tightly controlled firewall to avoid this from being abused.
253 TODO: a polling TFTP client may in fact be better?