> (%i1) eq: 4^x*(2^x-1)=4*(2^x+1);
> (%o1) (2^x-1)*4^x=4*(2^x+1)
> Now, with radcan, it works fine
> (%i2) subst(x=log(y)/log(2),eq),radcan;
> (%o2) y^3-y^2=4*y+4
There is a way to avoid substitution.
(%i3) radcan(eq), logsimp=false;
(%o3) %e^(3*log(2)*x)-%e^(2*log(2)*x) = 4*%e^(log(2)*x)+4
(%i4) solve(%);
<13 lines of output>
This trick also enables factorization. For example,
(%i5) radcan(36^x-2*6^x+1), logsimp=false;
(%o5) %e^((2*log(3)+2*log(2))*x)-2*%e^((log(3)+log(2))*x)+1
(%i6) factor(%);
(%o6) (%e^(log(3)*x+log(2)*x)-1)^2
(%i7) logcontract(%);
(%o7) (%e^(log(6)*x)-1)^2
I wonder if exp(log(6)*x) can be converted back to 6^x.