lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Date:   Mon, 12 Dec 2016 09:51:34 -0700
From:   Shuah Khan <shuahkh@....samsung.com>
To:     Krzysztof Opasiak <k.opasiak@...sung.com>, shuah@...nel.org,
        gregkh@...uxfoundation.org
Cc:     valentina.manea.m@...il.com, linux-kernel@...r.kernel.org,
        linux-usb@...r.kernel.org, Shuah Khan <shuahkh@....samsung.com>
Subject: Re: [PATCH v2] tools: usb: usbip: Add simple script to show how to
 setup vUDC

Hi Krzysztof,

On 12/12/2016 05:05 AM, Krzysztof Opasiak wrote:
> 
> Hi,
> 
> On 12/09/2016 10:40 PM, Shuah Khan wrote:
>> Hi Krzysztof,
>>
>> Thanks for getting to this so quickly. Couple of comments below:
>>
>> On 12/09/2016 10:15 AM, Krzysztof Opasiak wrote:
>>> Add some simple script which creates a USB gadget using ConfigFS
>>> and then exports it using vUDC.
>>>
>>> This may be useful for people who just started playing with
>>> USB/IP and vUDC as it shows exact steps how to setup all stuff.
>>>
>>> Signed-off-by: Krzysztof Opasiak <k.opasiak@...sung.com>
>>> ---
>>> Changes since v1:
>>> - Fix terminology mistake (server instead of client)
>>> ---
>>>  tools/usb/usbip/vudc/vudc_server_example.sh | 100 ++++++++++++++++++++++++++++
>>>  1 file changed, 100 insertions(+)
>>>  create mode 100755 tools/usb/usbip/vudc/vudc_server_example.sh
>>
>> Looks like it also includes client side, would it make sense to not name is server
>> and call it vudc_export_example.sh?
>>
> 
> This script is intended to be run on a server side not on client or
> both. It contains only couple of comments with suggestion what you
> should do on a client side but any of those commands won't be executed
> as the are all placed inside comments.
> 
> Moreover, our goal while developing vUDC was to make it compatible with
> existing USB/IP infrastructure. That's why client side usage is pretty
> the same for both vUDC and stub driver.
> 
>>>
>>> diff --git a/tools/usb/usbip/vudc/vudc_server_example.sh b/tools/usb/usbip/vudc/vudc_server_example.sh
>>> new file mode 100755
>>> index 000000000000..9bd1fd58d592
>>> --- /dev/null
>>> +++ b/tools/usb/usbip/vudc/vudc_server_example.sh
>>> @@ -0,0 +1,100 @@
>>> +#!/bin/bash
>>> +
>>> +################################################################################
>>> +# This is free and unencumbered software released into the public domain.
>>> +#
>>> +# Anyone is free to copy, modify, publish, use, compile, sell, or
>>> +# distribute this software, either in source code form or as a compiled
>>> +# binary, for any purpose, commercial or non-commercial, and by any
>>> +# means.
>>> +#
>>> +# In jurisdictions that recognize copyright laws, the author or authors
>>> +# of this software dedicate any and all copyright interest in the
>>> +# software to the public domain. We make this dedication for the benefit
>>> +# of the public at large and to the detriment of our heirs and
>>> +# successors. We intend this dedication to be an overt act of
>>> +# relinquishment in perpetuity of all present and future rights to this
>>> +# software under copyright law.
>>> +#
>>> +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
>>> +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
>>> +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
>>> +# IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
>>> +# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
>>> +# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
>>> +# OTHER DEALINGS IN THE SOFTWARE.
>>> +#
>>> +# For more information, please refer to <http://unlicense.org/>
>>> +################################################################################
>>
>> This is the first file under usbip with a different license. Why did you chose
>> this over GPL that is what is in all oter source files in this module?
> 
> The reason is very simple. It's just an *example* of vUDC usage, nothing
> more. There is no new or useful functionality inside this script so I
> don't see any reason to guard it with GPL license.
> 
> As far as I'm familiar with this license (please correct me if I'm
> wrong), it simply allows everyone to use this script as their code base
> and modify it to fit their needs and put them into products without
> publishing the code. Which I think may be useful for some people.

Sounds reasonable.

> 
>>
>> Greg! Do you have any recommendation on this?
>>
>>> +
>>> +################################################################################
>>> +# This is a sample script which shows how to use vUDC with ConfigFS gadgets
>>> +################################################################################
>>> +
>>> +# Stop script on error
>>> +set -e
>>> +
>>> +################################################################################
>>> +# Create your USB gadget
>>> +# You may use bare ConfigFS interface (as below)
>>> +# or libusbgx or gt toool
>>> +# Instead of ConfigFS gadgets you may use any of legacy gadgets.
>>> +################################################################################
>>> +CONFIGFS_MOUNT_POINT="/sys/kernel/config"
>>> +GADGET_NAME="g1"
>>> +ID_VENDOR="0x1d6b"
>>> +ID_PRODUCT="0x0104"
>>> +
>>> +cd ${CONFIGFS_MOUNT_POINT}/usb_gadget
>>> +# Create a new USB gadget
>>> +mkdir ${GADGET_NAME}
>>> +cd ${GADGET_NAME}
>>> +
>>> +# This gadget contains one function - ACM (serial port over USB)
>>> +FUNC_DIR="functions/acm.ser0"
>>> +mkdir ${FUNC_DIR}
>>> +
>>> +# Just one configuration
>>> +mkdir configs/c.1
>>> +ln -s ${FUNC_DIR} configs/c.1
>>> +
>>> +# Set our gadget identity
>>> +echo ${ID_VENDOR} > idVendor
>>> +echo ${ID_PRODUCT} > idProduct
>>> +
>>> +################################################################################
>>> +# Load vudc-module if vudc is not available
>>> +# You may change value of num param to get more than one vUDC instance
>>> +################################################################################
>>> +[[ -d /sys/class/udc/usbip-vudc.0 ]] || modprobe usbip-vudc num=1
>>> +
>>> +################################################################################
>>> +# Bind gadget to our vUDC
>>> +# By default we bind to first one but you may change this if you would like
>>> +# to use more than one instance
>>> +################################################################################
>>> +echo "usbip-vudc.0" > UDC
>>> +
>>> +################################################################################
>>> +# Let's now run our usbip daemon in a USB device mode
>>> +################################################################################
>>> +usbipd --device &
>>> +
>>> +################################################################################
>>> +# Now your USB gadget is available using USB/IP protocol.
>>> +# To check this you may try to list available devices:
>>> +#
>>> +# $ usbip list -r $SERVER_IP
>>> +# Exportable USB devices
>>> +# ======================
>>> +# usbipd: info: request 0x8005(6): complete
>>> +#  - 127.0.0.1
>>> +# usbip-vudc.0: Linux Foundation : unknown product (1d6b:0104)
>>> +#            : /sys/devices/platform/usbip-vudc.0
>>> +#            : (Defined at Interface level) (00/00/00)
>>> +#
>>> +# To attach this device to your client you may use:
>>> +#
>>
>> Are you missing
>> modprobe usbip-vhci
>>
> 
> Hmm... true. Usually I just simply build in this module in my test setup
> and that's why I forgot about it;)
> 
> I'll add this in next version.

That would be great.

> 
> Best regards,
> 

thanks,
-- Shuah

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ