Raspberry Pi RTL8723BS SDIO GPIO 150Mbs WiFi + BT

A board for adding WiFi and Bluetooth without using a USB port to any Raspberry Pi with a 40 pin header. Supports 802.11n upto 150Mbps.

Similar projects worth following
Upon looking for a solution to take full advantage of the SDIO bus on the Raspberry Pi I compared about 10 chipsets and it looks like the RTL8723BS offers the best combination of low cost module ($8 single, probably $3 in qty in Shezen), speed (150Mbps) and Linux drivers (not yet mainline though).

The same chipsets is used in some android and windows tablets and the C.H.I.P SBC from nextthing.

Interestingly the new Pi 3 uses a similar WiFi + BT chipset, but from broadcom.

The only downside is no on module antenna, i've tried to use the popular TI application note.

The other modules I looked at were either in a non friendly package, required too much external circuitry that I might get wrong and is time consuming to solder (AP6210 from cubietruck), were too expensive (Atmel) or tricky to source (SDIO m.2 cards in some tablets). Or didn't support 150Mbps WiFi (ESP8266/ESP8089). Or had questionable or non existent Linux drivers.

The RTL8723BS comes in modules with the part number F23BDSM25-W1 or RL-SM02BS-8723BS. Both appear to have similar pinouts. There does seem to be a module with a differential antenna design which wont work on this PCB so make sure the one you buy has a single antenna pin.

The driver I tested is here (there's also one in the nextthing CHIP repo)

The board also includes a pinout for a GPIO 3.5mm audio connector for the Pi zero. Though it might be better to use Bluetooth speakers or headphones as the module is hooked up to the I2S output of the Pi.

The 4 pin header on the board is a UART breakout. The chipsets Bluetooth is connected via the UART but can be disabled to use the UART for something else.

  • More Soldering

    jacksonliam03/11/2016 at 17:47 0 comments

    If you look closely at the module in the picture you can see that 4 resistors on the top left of the module are missing, on the other modules I have they are not missing! So I must've blown them off with all my hot air. There's also a bit of toombstoning on the RF capacitor and 0Ohm resistor which wasnt good.

    So I tried again, This time I didn't tin the pads for the module, Just a massive puddle of flux. I tacked a few pads in one corner with a blob of solder while pressing the module in place. I then started dragging solder around the module and surprisingly few of them bridged! It was like magic! The ones that did bridge cleaned up nicely with a freshly tinned tip. The GND pads were the trickiest, assumingly due to being more heatsinky and I was very careful not to bridge onto the passives on the module itself, which are quite close to the edge.

    I made sure to get the RF resistor and capacitor nice and flat and I'm really happy with the results. I've probably only soldered 200 components and I'm sold on 0603 now, so much quicker and less hassle that through-hole!

    I'm certainly going to build a reflow oven at some point though because so many interesting parts are in BGA or QFN.

    This one picks up lots more neighbouring APs than the first one :D

  • Crowded 2.4Ghz or Troublesome Drivers

    jacksonliam03/02/2016 at 08:57 0 comments

    My router wouldn't go into 40Mhz bonded channel mode due to neighbouring networks on channels 1,6 and 11. I tried to get the neighbouring AP on 6 to change channel by temporarily running APs on 5 and 7 but that didnt work. As I wanted to use a channel 7+11 bond. 'sharing' a channel with another AP works, being on an overlapping channel should/does not.

    The module did connect at 72.2Mbps in 20Mhz mode which is better than the ESP8266 board did (though the ESP board should in theory support that) and managed throughput in the region of 40Mbps, no improvement over the ESP8266 module.

    I wanted an AC1750 router anyway and my new router happens to have a naughty '40Mhz only' mode. This allowed the module to connect at 150Mbps but didn't help with the throughput as about twice as many packets were dropped as not.

    I can't say for sure if the dropped packets are from interference due to forcing 40Mhz mode, the RF layout of my board or the driver. I've tried a few drivers (e.g CHIP one) but the hadess one appears to be the most stable.I've tried 4.1 and 4.4.1 Pi kernels.

    But what this has really told me is I need to find a dual band 5Ghz chipset and dual band antenna. Let me know if you have a better idea than a U.FL connector and something like this.

  • Soldering the prototype

    jacksonliam02/29/2016 at 23:12 0 comments

    I ordered from OSHPARK and to the UK they're just as slow as the Chinese suppliers that give you 10 boards for the same price, so I probably won't use them again.

    The module was so tricky to solder compared to the ESP8266 ESP-12F. The castellated pads are too small to do individually with an iron. I managed to lift the bottom most pin on the left (luckily NC) trying this.

    In the end I fluxed and tinned all the pads using the drag method, then fluxed the bottom of the module, aligned it and applied light pressure on top with my tweezers, then directed hot air at the pads and the solder melted and the module sunk into place. Probably not the best way to do it, i think it really needs to be reflowed but I might try the 'blob and suck' method I've seen used on QFN chips on the next one.

View all 3 project logs

Enjoy this project?



Tim Small wrote 11/08/2017 at 10:57 point

I see ath10k SDIO support has now been merged into the Linux kernel.  Author references the QCA6584 which is an abgn+ac 2x2:2 design.

  Are you sure? yes | no

sidrocks_1993 wrote 05/12/2017 at 06:05 point

Hi, I am trying to use RTL8723BS wifi module with CM3 SDIO (pins 22-27) as above image.

I did dtoverlay in /boot/config.txt using: dtoverlay=sdio,poll_once=off,

and using Hadess driver.

I also tried different sdio_overclock values but always getting the following error (repeating every second):

mmc-bcm2835 3f300000.mmc: no support for card's volts
mmc1: error -22 whilst initializing SDIO card
mmc1: Controller never released inhibit bit(s).
mmc1: Got command interrupt 0x00030000 even though no command operation was in progress.

Surprisingly in the tests I have done until now same circuit and dtoverlay works for WiFi with Raspberry Pi 2 but giving above error with Compute Module 3. Any suggestion? Thank you.

  Are you sure? yes | no

jacksonliam wrote 05/12/2017 at 17:49 point

Sorry no idea, could be problem with the overlay, something else trying to map those pins? 

Or perhaps a hardware issue, wiring, power supply or faulty module? 

  Are you sure? yes | no

madivak wrote 02/14/2017 at 10:19 point

hey, am using the same rtl8723bs chip on a different board. but am having issues seeing the BT interface on  the uart port. i have connected pin44 uart-cts to uart-rts on my main board and uart-in to mainboard tx and uart-out to mainboard rx. could you please send or attach the schematic showing the BT connection to the RPi. Thanks

  Are you sure? yes | no

jacksonliam wrote 02/14/2017 at 22:16 point

The schematics are here

But I didn't actually try to get the BT working because of the WiFi issues. So no idea if it works! 

  Are you sure? yes | no

madivak wrote 02/15/2017 at 15:47 point

let me check out the sch. I got the wifi to work. With pretty good connection speeds. Well I guess I have to continue tinkering with the BT until it works. Though I can see the BT signal but I cant establish connection.

  Are you sure? yes | no

madivak wrote 02/22/2017 at 14:32 point

i got the BT to work. I can now see the BT device  and  pair  with it. But now am trying to get a file to transfer. Haven't figured that out yet.

  Are you sure? yes | no

helge wrote 01/24/2017 at 21:08 point

at $1,10/pc for the chip itself why not do a proper integration? FR4 is really ok if you don't run long RF traces.

  Are you sure? yes | no

jacksonliam wrote 01/24/2017 at 21:32 point

Instead of the module? The modules is not that much more expensive and you can't easily solder the chip by hand. The module also has the important layout bits with tiny passives (might be tricky to replace with bigger ones) and crystal done for you.

  Are you sure? yes | no

helge wrote 01/24/2017 at 22:12 point

Sure. If it's about prototyping I might be able to help. I'm just mentioning this because hybrid construction is not that great DFM wise. It also adds weight and is more prone to failure (I've seen bluetooth modules come off by the dozens when the reflow curve was slightly off).

And then there's the availability of the modules. 

Do you want to produce the boards or offer something more on the building blocks side of a kit?

  Are you sure? yes | no

helge wrote 01/24/2017 at 23:30 point

There's always a way, totally legit for home gamers:

  Are you sure? yes | no

Kelton wrote 06/30/2016 at 21:46 point

Alright, thanks for sharing your experiences.

  Are you sure? yes | no

Kelton wrote 06/30/2016 at 20:50 point

Hey jacksonliam, I'm working on a project where we need to identify a WiFi module to integrate onto a custom embedded Linux system, not unlike the Pi. I was looking at these RTL8723 modules and they seem promising, but I have no experience with these modules. Did you basically follow the schematic on the last page of this PDF:

Did you use a network analyzer to tune you PI filter? In general to you feel like this RTL8723 chipset provides a reliable connection when used with embedded Linux? Were you able to find that dual-band device that you were hoping for?

Any feedback would be appreciated. Cheers!

  Are you sure? yes | no

jacksonliam wrote 06/30/2016 at 21:35 point

Hi there! 

Yes I just followed the pinout and pad layout on the datasheet. To be honest I didn't do too much testing with it beyond checking the basics worked. 

For my needs the ESP8266 modules (see my other project) seem to work fine and are cheaper, easier to solder and have an antenna built in! 

The RF design on this board is very rough and on further reading I'm pretty sure my RF traces aren't the 50 ohm they should be. The filter is certainly not tuned and the values are just guessed. The WiFi performance is fine for my tests but it sure isn't going to be any good for an actual product. 

I believe this module is used in other products so I don't see why it wouldn't be reliable!

I have found a possible dual band module but no antenna, I might have to add a u.fl connector for an external dual band antenna, but do not know what components or values I should be putting in the RF path to the u.fl connector. 

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates