$f(z)=z^n+a_{n-1}z^{n-1}+\cdots+ a_0\in\mathbb Z[z]$ has all its roots on the unit circle. Prove that any root of $f(z)=0$ is a root of unity. 
Suppose that $f(z)=z^n+a_{n-1}z^{n-1}+\cdots+ a_0\in\mathbb Z[z]$ has all its roots on the unit circle in the complex plane. Prove that any root of $f(z)=0$ is a root of unity.


This question has been asked before, yet it links to another MO post which proves a stronger result:


Let $f$ be a monic polynomial with integer coefficients in $x$. If all roots of $f$ have absolute value at most $1$, then $f$ is a product of cyclotomic polynomials and/or a power of $x$ (that is, all nonzero roots are roots of unity).


David E Speyer gave a short and relatively elementary proof. But other answers, and most likely the standard approaches, involve Galois theory. 
So I am looking for other methods proving the statement which requires the roots lying on the unit circle without invoking Galois theory.
Thank you.
 A: Consider a Frobenius matrix $M \in \mathscr{M}_n(\mathbb{Z})$ such that its characteristic polynomial is $f$.
Consider, for each $n \geq 1$, $\chi_n$ to be the characteristic polynomial of $M^n$. All the $\chi_p$ are monic with degree $n$.
Let us denote $\omega_1, \ldots, \omega_n$ the roots of $\chi_1$ with multiplicity.
By trigonalizing $M$ and taking its powers, $\omega_1^k,\ldots,\omega_n^k$ are the roots with multiplicity of $\chi_k$.
Thus all the $\chi_p$ have all their roots on the unit circle, which entails a uniform bound on their coefficients (the coefficient $X^k$ has modulus not exceeding $\binom{n}{k}$, by Vieta’s formulas).
Therefore, there exists $n_1 < \ldots < n_{n+1}$ such that the $\chi_{n_k}$ are the same. 
In particular, for each $n+1 \geq k > 1$ there is $1 \leq j_k \leq n$ such that $\omega_{j_k}^{n_k}$. 
If for some $k$, $j_k=1$, then $\omega_1^{n_1}=\omega_1^{n_k}$ ie $\omega_1^{n_k-n_1}=1$ and we are done.
Otherwise, by the pigeonhole principle, there are $k < k’$ such that $j=j_k=j_{k’}$, and $\omega_1^{n_1}=\omega_j^{n_k}=\omega_j^{n_{k’}}$, thus (as above) $\omega_j$ is a root of unity, thus $\omega_j^{n_k}=\omega_1^{n_1}$ also is one, thus so is $\omega_1$, and we are also done. 
