[U-Boot] UDP packet sender

Joe Hershberger joe.hershberger at gmail.com
Fri Feb 2 19:13:00 UTC 2018


On Tue, Jan 23, 2018 at 8:02 AM, Gaëtan Carlier <gcembed at gmail.com> wrote:
> Joe,
> On 01/23/2018 01:54 AM, Joe Hershberger wrote:
>> On Mon, Jan 22, 2018 at 5:28 PM, Gaëtan Carlier <gcembed at gmail.com> wrote:
>>> Hi Joe,
>>>
>>> On 01/22/2018 11:46 PM, Joe Hershberger wrote:
>>>> Hi Gaëtan,
>>>>
>>>> On Thu, Jan 18, 2018 at 4:56 AM, Gaëtan Carlier <gcembed at gmail.com> wrote:
>>>>> Hi,
>>>>> I would like to implement a new command and submit it to the mailing list.
>>>>> The command will have the following format:
>>>>> udpsend <destination/broadcast ip> <destination port> <source port> <text to send>
>>>>>
>>>>> udpsend 255.255.255.255 4040 0 hello world
>>>>>
>>>>> If source port is 0, a random port will be used (11000 + (get_timer(0) % 4096))

If you want to add this, add it as a command in  cmd/netcat.c and use
the same semantics as netcat as much as possible. Since there is no
pipe support in U-Boot's shell, the data to send will have to be a
parameter. Best to make it something that does not collide with
netcat.

In netcat, you specify a "-u" switch to enable UDP, so your command
would require that switch (so TCP could be added later).

So that means your invocation should be "nc -u -p <srcport> <host>
<dstport> -- Text to send"

>>>> I'd like to understand the purpose / use-case for this command? Maybe
>>>> there is a more appropriate way to solve the problem you have instead.
>>>>
>>>
>>> I want to send the current progression of an update script. As the board has no display/leds, the only way to get update progression is to broadcast UDP packet that a PC software will monitor. U-Boot will load/source a script from an ext4 partition. This script will load a rootfs image from update partition of an eMMC splitted into 10M chunks that will be written to an other partition of the eMMC.
>>> This is for update on site (by customer).
>>>
>>> This UDP command will also be used in a closed production LAN to send Unique ID of the CPU (secret) and the MAC address to the monitoring production (burning) software that will feed a database to be able to generate license keys linked to hardware and print a label with the product name and the MAC address.
>>>
>>> Maybe there is already existing command that I can use from a U-Boot script ?
>>
>> I think this is commonly done by enabling netconsole and controlling /
>> monitoring progress based on console output sent over UDP.
>
> a) I can/want not enable netconsole when the product is on the network of the customer.
> b) Once on customer LAN, everything is DHCP.
> c) I don't want to increase load of CPU because updating software on customer's computer has to decode all UDP frames sent by U-Boot while 10% of UDP are really needed (several boards can be on the same network).
>
>
>>
>> Cheers,
>> -Joe
>>
>>>>> Where do I have to place my code : cmd or net directory ?
>>>>> For me cmd will be the better directory to keep it away from all more complex stuff like DHCP, TFTP, ...
>>>>
>>>> That's probably true. cmd/ would be the appropriate place.
>>>>
>>>> -Joe
>>>>
>>>
>>> Regards,
>>> Gaëtan
>
> Regards,
> Gaëtan.


More information about the U-Boot mailing list