Hardware mod tutorial: Replace wifi cards on Linksys WRT-1900AC v1

This is a hardware mod for Linksys WRT-1900AC v1. Follow this guide at your own risk.

The Linksys WRT-1900AC v1 uses the mwlwifi driver for it's wireless adapters. This driver is not maintained and has become unusable recently.

Fortunately, on this router, the adapters are removable. The two wifi chips sit on a common expansion card that is inserted into two standard mini-PCIe slots.

You need:

  • Hardware knowledge. You must at least be able to replace a computer card.
  • Philips and slot screwdriver.
  • Drill, M2 - M2.5 taps and short screws. It may work without taps, but in this case be prepared with extra screws.
  • At least one replacement wifi card, well supported by OpenWrt and/or Linux kernel, possibly firmware too. Both full-size and half-size mini-PCIe will work. It is preferable to have cards that are single-sided (no components or shield on the back side).
  • If you plan to use double-sided cards, you need to have (or borrow) a single-sided card (any card) of the same lenght to use as a positioning guide.
  • If you plan to use double-sided cards, you also need a Fretsaw and knowledge to use it.
  • OpenWrt knowledge, to install new wifi drivers, possibly by building your own firmware image from source or using the image builder.

Step 1: Open the case.
There are screws inside the feet of the router. (Front and back screws are not the same!) The front part of the case (blue) opens by pulling toward the front of the router, away from the black part of the case.
The black part of the case can be separated into top and bottom part. There are plastic clamps keeping the two parts together. Pull carefully, because they may break.

Step 2: Remove heatsink from the wifi board
Disconnect the antenna cables first.
The part where the antenna cables were connected is the wifi board. It has a separate heatsink with a few tiny screws. Remove it.

After this, it will look like this:

Step 3: Remove the wifi board
There are two screws at the corners of the wifi board, near the antenna connectors. Remove these and pull the wifi card up and toward the front of the router.

After this, the router will look like this:

You can see the mini-PCIe connectors.

Step 4: Mark positions for the mPCIe screw holes
Don't remove the heatsink screws!
Insert your cards into the mPCIe connectors and use a pencil to mark the position of the screw holes on the heatsink. I recommend to mark holes for both half-size and full-size cards, in case you need to change them later.

Make sure there are no mistakes here. Be very accurate! Don't do it if you don't have a precise guide for the screw holes! If the holes are miss-aligned even by a fraction of a mm, the card won't sit properly in the connector and intermittent connections will cause kernel panics.

If your cards are double-sided (have components or a shield on the back side), you won't be able to position them properly because the back side components won't have enough space above the heatsink. The heatsink will need to be cut to make room for back-side components on double-sided cards. You must use a single-sided card to mark the holes for the screws.
Also mark the size of the card's components from the back side.
As an alternative, you may try to cut the heatsink first and mark the screw holes after that. Make sure the heatsink is properly installed and all heatsink screws are tight before marking the holes. Mistakes can't be fixed!

Step 5: Separate the main board from the case and remove the main heatsink
The main board of the router is attached to the bottom part of the case with two screws. (In the image above, the screws are already removed.) Remove the screws and pull the board up from the case.
Disconnect the fan.
Turn over the board and remove the many screws holding the heatsink.

The heatsink has big thermal pads under it. They tend to act as a glue. Do your best to detach the heatsink without breaking the thermal pads. (I couldn't.)

The router will now look like this:

(Note that in the image above, I already did the cutting and drilling from the next step. I had one single-sided card and one double-sided card. I only cut the slot where the double-sided card would be installed.)

Step 6: Cut the heatsink (if needed)
Put away the router board and wifi cards. Very far away! Drilling will produce metal shavings that can cause shorts on electronic components.

If you need to install double-sided cards, cut the heatsink to make space for their back-side components. The heatsink metal is very soft. Use a fretsaw. Make sure you don't cut away the part where the screw holes should be!

Step 7: Drill and thread the mPCIe mounting screw holes
Measure your screws. Drill holes smaller than the screws. Drill and then thread the screw holes. It is VERY important to be precise! Wrong holes can't be corrected. This is the most difficult part of this mod.

Thread the holes. If you don't have taps that small, you can try to drill holes only a tiny bit smaller than the screws and destroy a few screws to make threads by forcing them into the holes.

I recommend to drill holes for both half-size and full-size cards, in case you need to change them later.

CLEAN THE HEATSINK and your workplace! There must be no metal filings left to contaminate the electronic components.

Test-install the new cards on the heatsink BEFORE mounting the heatsink. Make sure the screws are not long enough to protrude on the other side of the heatsink! They will damage the router board if they do. Cut them if too long. Remove the cards.


Step 8: Reinstall everything
Install the heatsink on the router board. Pay attention to the broken thermal pads. Replace them if you have thermal pads available. Connect the fan.

Install the new wifi cards. Make sure they sit properly in the slot and they don't move while tightening the screw. I recommend to use only one screw. One of the two holes may be better positioned than the other. If things don't work, or the card is visibly tilted in the slot, try the other screw.
Don't tighten the screws too much. The heatsink metal is weak and threads are easy to strip.

WARNING: Some cards, even if single-sided, have some traces on the back side. In this case, to avoid any shorts with the heatsink, place a thin plastic (or paper) foil under the card.

Install the board in the case. Connect the antenna cables. Don't close case yet.
This how it looks with the new cards:

Step 9: Test the new cards, install drivers
Power up the router and check that the new cards are detected, then close the case.

If they are not detected, check that they are properly inserted in the slots. Try to use the other screw instead. You may also try a cardboard or rubber spacer/washer under the card.
I had a card that was detected intermittently, even though it was propery inserted. I suspect that this router's power is noisy and that card didn't like it.

Install the new drivers and firmware.
Configure your wifi networks again. It is recommended to reset OpenWrt to the defaults (all of it). If not, very weird thing may happen.

Step 10: Done!
Enjoy a your new and very stable wifi network!

Note: A possible easier mod
The router's main board has holes to insert mPCIe mounting nuts/spacers. These holes are completely covered by the heatsink and can't be used.
As an alternative to my mod, a very large cut may be made in the heatsink so that these holes become available. In this case only two mini-PCIe nuts/spacers are needed and I expect that they will be perfectly aligned.
The bad part is that the original board won't have any bottom cooling if it is installed back over such a big hole in the heatsink.

This guide is licensed CC-BY-SA.
I would appreciate if someone adds it to WRT-1900AC page. Thanks!


Nice work!
I have a WRT1900ACv1 - wifi works fine on DD-WRT - I assumed it also worked fine on latest OpenWrt.
The real problem child in the Linksys lineup is the WRT3200ACM - wifi on both DD-WRT and OpenWrt has issues.
Can that model also be modded in this way?

Might fix various issues. Somebody fixed pretty big problems. Probably still doesn’t support WPA3.

1 Like

WRT1900ACv1 - supports WPA3 in DD-WRT - I have not tried a recent build of OpenWrt on it, but I suspect a Snaphot build should work.
WRT3200ACM - nothing will get WPA3 working on its wifi chip - just trying to is enough to disable wifi and will require a restore from backup to get wifi working correctly again.

Could try disabling hwaccel.

Which cards did you go with? MediaTek AX ones?

I don't know. Open it and see if the wifi is on a separate board.

Too little, too late. I did this mod a month ago and it solved all my mwlwifi problems permanently.

No. Atheros AR9380 for 5GHz and AR9285 for 2.4GHz. Both work with ath9k.


Attention, I have just taken a wrt1900ac v2 (cobra), I wished to "modder" it with another wifi card.

And surprise, the wifi card is built into the motherboard, so not all models are supported.

Fortunately, I already have the wrt1900ac v1, so I'll be able to check whether this tutorial is true.

Best regards,

Oh the guy that fixed up the driver. Welcome.

Unfortunately, I no longer own my v1 or v2 so I can’t be of help in this thread.