Add firmware for the RealTek RTL8192CU family of wireless chipsets, and

adapt the urtwn(4) driver to use the new files.  The firmware files were
extracted from the Linux driver at www.realtek.com, version 0005.1230.2011
and the license permits redistribution without modification.

While I'm here, install the files in /libdata/firmware/if_urtwn, like
most of the other network adapter firmware.

urtwn(4) can now operate without needing external files installed.  Tested
on my Edimax adapter.
This commit is contained in:
riz 2012-06-14 04:14:35 +00:00
parent 4775edcbb6
commit 49449523c7
12 changed files with 86 additions and 24 deletions

View File

@ -1,4 +1,4 @@
# $NetBSD: mi,v 1.996 2012/06/03 23:19:09 joerg Exp $
# $NetBSD: mi,v 1.997 2012/06/14 04:14:35 riz Exp $
#
# Note: Don't delete entries from here - mark them as "obsolete" instead,
# unless otherwise stated below.
@ -166,6 +166,10 @@
./libdata/firmware/if_otus/otus-init base-firmware-root
./libdata/firmware/if_otus/otus-license base-firmware-root
./libdata/firmware/if_otus/otus-main base-firmware-root
./libdata/firmware/if_urtwn base-firmware-root
./libdata/firmware/if_urtwn/Realtek-Firmware-License.txt base-firmware-root
./libdata/firmware/if_urtwn/rtl8192cfw.bin base-firmware-root
./libdata/firmware/if_urtwn/rtl8192cfwU.bin base-firmware-root
./libdata/firmware/if_wpi base-firmware-root
./libdata/firmware/if_wpi/LICENSE.ipw3945-ucode base-obsolete obsolete
./libdata/firmware/if_wpi/LICENSE.iwlwifi-3945-ucode base-firmware-root
@ -188,7 +192,7 @@
./libdata/firmware/run/run-rt2870 base-firmware-root
./libdata/firmware/run/run-rt3071 base-firmware-root
./libdata/firmware/upgt base-firmware-root
./libdata/firmware/urtwn base-firmware-root
./libdata/firmware/urtwn base-firmware-root obsolete
./libdata/firmware/zyd base-firmware-root
./libdata/firmware/zyd/zd1211-licence base-obsolete obsolete
./libdata/firmware/zyd/zd1211-license base-firmware-root

View File

@ -1,4 +1,4 @@
# $NetBSD: NetBSD.dist.base,v 1.100 2012/06/01 13:19:38 nonaka Exp $
# $NetBSD: NetBSD.dist.base,v 1.101 2012/06/14 04:14:36 riz Exp $
# @(#)4.4BSD.dist 8.1 (Berkeley) 6/13/93
# Do not customize this file as it may be overwritten on upgrades.
@ -67,12 +67,12 @@
./libdata/firmware/if_iwi
./libdata/firmware/if_iwn
./libdata/firmware/if_otus
./libdata/firmware/if_urtwn
./libdata/firmware/if_wpi
./libdata/firmware/ral
./libdata/firmware/rum
./libdata/firmware/run
./libdata/firmware/upgt
./libdata/firmware/urtwn
./libdata/firmware/zyd
./libexec
./libexec/dhcpcd-hooks

4
external/Makefile vendored
View File

@ -1,6 +1,6 @@
# $NetBSD: Makefile,v 1.17 2012/06/13 23:41:09 riz Exp $
# $NetBSD: Makefile,v 1.18 2012/06/14 04:14:36 riz Exp $
SUBDIR+= apache2 atheros bsd cddl gpl2 gpl3 historical intel-fw-eula
SUBDIR+= intel-fw-public ibm-public mit public-domain
SUBDIR+= intel-fw-public ibm-public mit public-domain realtek
.include <bsd.subdir.mk>

4
external/README vendored
View File

@ -1,4 +1,4 @@
$NetBSD: README,v 1.14 2010/11/03 18:52:44 christos Exp $
$NetBSD: README,v 1.15 2012/06/14 04:14:36 riz Exp $
Organization of Sources:
@ -82,6 +82,8 @@ The licenses currently used are:
public-domain Non-license for code that has been explicitly put
into the Public Domain.
realtek RealTek license.
zlib Zlib (BSD-like) license.
http://www.zlib.net/zlib_license.html

5
external/realtek/Makefile vendored Normal file
View File

@ -0,0 +1,5 @@
# $NetBSD: Makefile,v 1.1 2012/06/14 04:14:36 riz Exp $
SUBDIR+= urtwn
.include <bsd.subdir.mk>

9
external/realtek/Makefile.inc vendored Normal file
View File

@ -0,0 +1,9 @@
# $NetBSD: Makefile.inc,v 1.1 2012/06/14 04:14:36 riz Exp $
FILESOWN= ${FIRMWAREOWN}
FILESGRP= ${FIRMWAREGRP}
FILESMODE= ${FIRMWAREMODE}
includes:
clean:
cleandir:

10
external/realtek/urtwn/Makefile vendored Normal file
View File

@ -0,0 +1,10 @@
# $NetBSD: Makefile,v 1.1 2012/06/14 04:14:36 riz Exp $
NOMAN= # define
FILES= dist/Realtek-Firmware-License.txt dist/rtl8192cfw.bin
FILES+= dist/rtl8192cfwU.bin
FILESDIR= /libdata/firmware/if_urtwn
.include <bsd.files.mk>

View File

@ -0,0 +1,39 @@
Copyright (c) 2009, Realtek Semiconductor Corporation
All rights reserved.
Redistribution. Redistribution and use in binary form, without
modification, are permitted provided that the following conditions are
met:
* Redistributions must reproduce the above copyright notice and the
following disclaimer in the documentation and/or other materials
provided with the distribution.
* Neither the name of Realtek Semiconductor Corporation nor the names of its
suppliers may be used to endorse or promote products derived from this
software without specific prior written permission.
* No reverse engineering, decompilation, or disassembly of this software
is permitted.
Limited patent license. Realtek Semiconductor Corporation grants a world-wide,
royalty-free, non-exclusive license under patents it now or hereafter
owns or controls to make, have made, use, import, offer to sell and
sell ("Utilize") this software, but solely to the extent that any
such patent is necessary to Utilize the software alone, or in
combination with an operating system licensed under an approved Open
Source license as listed by the Open Source Initiative at
http://opensource.org/licenses. The patent license shall not apply to
any other combinations which include this software. No hardware per
se is licensed hereunder.
DISCLAIMER. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
DAMAGE.

BIN
external/realtek/urtwn/dist/rtl8192cfw.bin vendored Executable file

Binary file not shown.

BIN
external/realtek/urtwn/dist/rtl8192cfwU.bin vendored Executable file

Binary file not shown.

View File

@ -1,4 +1,4 @@
.\" $NetBSD: urtwn.4,v 1.3 2012/05/31 12:10:10 nonaka Exp $
.\" $NetBSD: urtwn.4,v 1.4 2012/06/14 04:14:36 riz Exp $
.\" $OpenBSD: urtwn.4,v 1.15 2011/11/26 06:39:33 ckuethe Exp $
.\"
.\" Copyright (c) 2010 Damien Bergamini <damien.bergamini@free.fr>
@ -15,7 +15,7 @@
.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
.\"
.Dd March 25, 2012
.Dd June 13, 2012
.Dt URTWN 4
.Os
.Sh NAME
@ -77,20 +77,13 @@ driver can be configured at runtime with
or on boot with
.Xr ifconfig.if 5 .
.Sh FILES
The driver needs at least version 1.1p0 of the following firmware files,
The driver needs the following firmware files,
which are loaded when an interface is attached:
.Pp
.Bl -tag -width Ds -offset indent -compact
.It /libdata/firmware/urtwn/urtwn-rtl8192cfwT
.It /libdata/firmware/urtwn/urtwn-rtl8192cfwU
.It /libdata/firmware/urtwn/urtwn-rtl8723fw
.It /libdata/firmware/if_urtwn/rtl8192cfw.bin
.It /libdata/firmware/if_urtwn/rtl8192cfwU.bin
.El
.Pp
A prepackaged version of the firmware, designed to be used with
.Xr pkg_add 1 ,
can be found at:
.Bd -literal -offset 3n
http://firmware.openbsd.org/firmware/urtwn-firmware-1.1p0.tgz
.Ed
.Sh HARDWARE
The following adapters should work:

View File

@ -1,4 +1,4 @@
/* $NetBSD: if_urtwn.c,v 1.4 2012/06/01 12:38:25 nonaka Exp $ */
/* $NetBSD: if_urtwn.c,v 1.5 2012/06/14 04:14:36 riz Exp $ */
/* $OpenBSD: if_urtwn.c,v 1.20 2011/11/26 06:39:33 ckuethe Exp $ */
/*-
@ -22,7 +22,7 @@
*/
#include <sys/cdefs.h>
__KERNEL_RCSID(0, "$NetBSD: if_urtwn.c,v 1.4 2012/06/01 12:38:25 nonaka Exp $");
__KERNEL_RCSID(0, "$NetBSD: if_urtwn.c,v 1.5 2012/06/14 04:14:36 riz Exp $");
#include <sys/param.h>
#include <sys/sockio.h>
@ -2600,10 +2600,10 @@ urtwn_load_firmware(struct urtwn_softc *sc)
/* Read firmware image from the filesystem. */
if ((sc->chip & (URTWN_CHIP_UMC_A_CUT | URTWN_CHIP_92C)) ==
URTWN_CHIP_UMC_A_CUT)
name = "urtwn-rtl8192cfwU";
name = "rtl8192cfwU.bin";
else
name = "urtwn-rtl8192cfwT";
if ((error = firmware_open("urtwn", name, &fwh)) != 0) {
name = "rtl8192cfw.bin";
if ((error = firmware_open("if_urtwn", name, &fwh)) != 0) {
aprint_error_dev(sc->sc_dev,
"failed loadfirmware of file %s (error %d)\n", name, error);
return (error);