[U-Boot] UDP packet sender

Gaëtan Carlier gcembed at gmail.com
Tue Feb 6 07:57:41 UTC 2018


Hi Joe,

On 02/02/2018 08:13 PM, Joe Hershberger wrote:
> 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"
>

Thank you for these informations. I will do that.
 
>>>>> 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.

Regards,
Gaëtan.


More information about the U-Boot mailing list