user13228: I have been searching for a way to upgrade the sketch on my Arduino Uno wirelessly (preferable WiFi, but not a must). Does the Uno support such function?
If not - are there any other boards that might support it?
Also, to further extend on the problem - I wouldn't want to upload a new sketch through the Arduino IDE but rather do it programmatically (trying to integrate it with a version management system of my own).

user10794: There are plenty of examples of Arduinos being used to reprogram Arduinos:

Using an Arduino as an AVR ISP (In-System Programmer)
Standalone AVR ISP Programmer Shield Kit
Atmega chip stand-alone programmer to upload .hex files
Atmega bootloader programmer

So the obvious choice here is to have two chips. One does the real work, the other one programs the first one, when required.
The "programmer" chip could be written to read from a disk file, accept data over Ethernet, WiFi or whatever. And it could be programmed to reprogram the target chip at a certain time of day, or on command.
In this system the "main" chip gets on with whatever-it-is it is doing, and the "programmer" chip just monitors its source of new code.

Does the Uno support such function? If not - are there any other boards that might support it?

I don't know of any boards that directly support that. These boards are generally built as educational tools, not as ready to deploy in the field as robust auto-upgrading devices. For one thing, keeping things cheap enough for students to purchase, perhaps one for each student in a classroom of 30, was one of the design criteria.

user4143: There's two ways you can go about this - hardware and software.
To do it in software would mean writing a new bootloader that supported whatever wireless medium you chose.  The bootloader might end up quite large and thus restrict the size of sketch you are able to support.  It may also require advanced programming techniques in order to fit it into memory.  Not a task for a beginner.
Doing it in hardware is easier but more restrictive.  You need a wireless medium that can emulate a serial device including the ability to perform a reset of the Arduino.  There are bluetooth interfaces for the Arduino that can perform this kind of functionality, but I am not aware of anything WiFi or Ethernet that even remotely comes close.
There are Arduino boards available with this kind of bluetooth interface built in.
A possible third option is something in between - you have two Arduinos (or some other external MCU based system, like an ATTiny for instance), the "target" and the "programmer".  The "programmer" is what is connected to the wireless and accepts instructions and commands over the air.  It is then capable of putting the "target" into bootloader mode (reset it) and pass data through to its serial port for programming.  It does mean the "target" isn't directly connected to the wireless though, so it is up to the "programmer" to support whatever wireless functionality is needed and communicate properly with the "target" to get it to do everything it should.  There is no way to do FOTA to the "programmer" though, so you're back at square one if you want to reprogram that...

13228: <p>I have been searching for a way to upgrade the sketch on my Arduino Uno wirelessly (preferable WiFi, but not a must). Does the Uno support such function?
If not - are there any other boards that might support it?</p>

<p>Also, to further extend on the problem - I wouldn't want to upload a new sketch through the Arduino IDE but rather do it programmatically (trying to integrate it with a version management system of my own).</p>
 10794: <p>There are plenty of examples of Arduinos being used to reprogram Arduinos:</p>

<ul>
<li><a href="https://www.arduino.cc/en/Tutorial/ArduinoISP" rel="nofollow">Using an Arduino as an AVR ISP (In-System Programmer)</a></li>
<li><a href="http://www.adafruit.com/products/462" rel="nofollow">Standalone AVR ISP Programmer Shield Kit</a></li>
<li><a href="http://www.gammon.com.au/uploader" rel="nofollow">Atmega chip stand-alone programmer to upload .hex files</a></li>
<li><a href="http://www.gammon.com.au/bootloader" rel="nofollow">Atmega bootloader programmer</a></li>
</ul>

<p>So the obvious choice here is to have <strong>two</strong> chips. One does the real work, the other one programs the first one, when required.</p>

<p>The "programmer" chip could be written to read from a disk file, accept data over Ethernet, WiFi or whatever. And it could be programmed to reprogram the target chip at a certain time of day, or on command.</p>

<p>In this system the "main" chip gets on with whatever-it-is it is doing, and the "programmer" chip just monitors its source of new code.</p>

<blockquote>
  <p>Does the Uno support such function? If not - are there any other boards that might support it?</p>
</blockquote>

<p>I don't know of any boards that directly support that. These boards are generally built as educational tools, not as ready to deploy in the field as robust auto-upgrading devices. For one thing, keeping things cheap enough for students to purchase, perhaps one for each student in a classroom of 30, was one of the design criteria.</p>
 4143: <p>There's two ways you can go about this - hardware and software.</p>

<p>To do it in software would mean writing a new bootloader that supported whatever wireless medium you chose.  The bootloader might end up quite large and thus restrict the size of sketch you are able to support.  It may also require advanced programming techniques in order to fit it into memory.  Not a task for a beginner.</p>

<p>Doing it in hardware is easier but more restrictive.  You need a wireless medium that can emulate a serial device <em>including the ability to perform a reset of the Arduino</em>.  There are bluetooth interfaces for the Arduino that can perform this kind of functionality, but I am not aware of anything WiFi or Ethernet that even remotely comes close.</p>

<p>There are Arduino boards available with this kind of bluetooth interface built in.</p>

<p>A possible third option is something in between - you have two Arduinos (or some other external MCU based system, like an ATTiny for instance), the "target" and the "programmer".  The "programmer" is what is connected to the wireless and accepts instructions and commands over the air.  It is then capable of putting the "target" into bootloader mode (reset it) and pass data through to its serial port for programming.  It does mean the "target" isn't directly connected to the wireless though, so it is up to the "programmer" to support whatever wireless functionality is needed and communicate properly with the "target" to get it to do everything it should.  There is no way to do FOTA to the "programmer" though, so you're back at square one if you want to reprogram that...</p>
